2014-04-02 4 views
0

Я переформатирую текст, а иногда у меня есть строка, где есть предложение, которое не заканчивается точкой.Регулярное выражение для ввода точки (.) После символов, перед новой строкой

Я выполняю различные проверки для этой цели, и еще один, который мне нужен, это «Добавить точку после последнего символа перед новой строкой».

Я не уверен, как сформировать регулярное выражение для этого:]

$string = preg_replace("/???/", ".\n", $string); 
+0

Приведите пример строки –

ответ

2

Попробуйте это:

$string = preg_replace("/(?<![.])(?=[\n\r]|$)/", ".", $string); 

отрицательный (?<![.]) просмотра назад проверяет предыдущий символ не .

положительный lookahead (?=[\n\r]|$) проверяет следующий символ - это символ новой строки или конец строки.

+0

Это сделало трюк, thx amigo! –

+0

Как бы вы это сделали, но используя re.sub? $ string = preg_replace ("/ (? Silas

1

, как это я полагаю:

<?php 
$string = "Add dot after last character before new line\n"; 
$string = preg_replace("/(.)$/", "$1.\n", $string); 
print $string; 
?> 

Таким образом, точка будет добавлена ​​после слова line в предложении и перед \n.

демо: http://ideone.com/J4g7tH

+0

Попробуйте с '$ string =" перед новой строкой. "' –

+0

В конце будет добавлен дополнительный '\ n'. – Toto

1

Я хотел бы сделать:

$string = "Add dot after last character before new line\n"; 
$string = preg_replace("/([^.\r\n])$/s", "$1.", $string); 
+0

Его приятно. Я думаю, что его обработка пустой строки также. –

0

Спасибо за все ответы, но ни один из них действительно не пойманы все сценарии правильно.

я нащупал свой путь к хорошему решению, используя слово граничных регулярок класса символов:

// Add dot after every word boundary that is followed by a new line. 
$string = preg_replace("/[\b][\n]/", ".\n", $string); 

Я думаю [\b][\n] может так же хорошо быть \b\n без квадратных скобок.

Смежные вопросы