Как предварительно заменить {число}) с помощью \ n {число}) - PullRequest
0 голосов
/ 29 апреля 2010

Как я могу заменить {number}) на \n{number})

Скажи, что у меня есть что-то вроде этого

1) test string testing new string. 2) that is also a new string no new line. 3) here also no new lines.

На выходе должно быть что-то вроде этого

1) test string testing new string.

2) that is also a new string no new line.

3) here also no new lines.

Как я могу сделать это с помощью регулярного выражения?

Ответы [ 3 ]

7 голосов
/ 29 апреля 2010
$outputstring = preg_replace('/([0-9]+)\)/', "\n$1)", $inputstring);

Соответствует любому набору цифр, за которым следует литерал ), заменяется новой строкой, за которой следуют те цифры, за которыми следует ).

Если вы хотите, чтобы на самом деле была пустая строка между ними, как в примере с вашим примером, вы бы хотели вставить две строки (так как вам нужна новая строка для окончания строки с текстом, а затем еще одна, чтобы добавить пробел линия). Просто сделайте это \n\n вместо \n во втором аргументе, если это так.

Также обратите внимание, что это добавит новую строку в начале строки, если она начинается с пронумерованной точки, поэтому вы можете захотеть обрезать строку позже, если не хотите лидирующей новой строки.

2 голосов
/ 29 апреля 2010
$result = preg_replace('/(?<!\A|\n\n)(?=[0-9]+\))/m', '\n\n', $subject);

будет делать то же самое, что и решение Дэва, но также оставит числа в начале строки (в данном случае 1)). Кроме того, числа будут оставлены в покое, если перед ними уже есть два перевода строки.

1 голос
/ 29 апреля 2010

Пользователь preg_replace Функция

$ str = "1) тестовая строка тестирует новую строку. 2) это также новая строка без новой строки. 3) здесь также нет новых строк.";

print preg_replace("/(\d+\))/","\n$1" , $str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...