Я довольно новичок в регулярных выражениях. У меня есть требование заменить пробелы в куске многострочного текста. Правилами замены являются:Замена пробелов с использованием регулярного выражения в PHP
- Заменить все пробелы в начале строки неразрывным пространством (
). - Заменить любой экземпляр повторяющихся пробелов (более одного пространства вместе) с таким же количеством неразрывных пробелов.
- Отдельные пробелы, которые не находятся в начале строки, остаются нетронутыми.
Я использовал Regex Coach построить шаблон соответствия:
/(){2,}|^()/
Давайте предположим, что у меня есть этот входной текст:
asdasd asdasd asdas1
asda234 4545 54
34545 345 34534
34 345
Использование регулярных выражений PHP функции замены (как preg_replace()
), Я хочу получить этот результат:
asdasd asdasd  asdas1
 asda234 4545    54
  34545 345  34534
34 345
Я счастлив делать простые текстовые замены, используя регулярные выражения, но у меня возникают проблемы с тем, как заменить несколько раз внутри матча, чтобы получить желаемый результат.
Хороший ответ, но стоит ли менять ваше предложение на использование \ s, поскольку это были только последовательности пробелов, которые хотел задать для замены, и \ s, конечно, будут включать в себя табуляции, новые строки, возврат каретки и несколько других с включенными определенными настройками.Я бы пошел с/(? <= \ X20) \ x20 | \ x20 (? = \ X20) |^\ x20/ – Sprogz 2008-10-16 11:03:17
Спасибо!/(? <= \ x20) \ x20 | \ x20 (? = \ x20) |^\ x20/с «m» в конце отлично работает! – 2008-10-16 12:24:49