我正在重新格式化一些文本,有時我有一個字符串,其中有一個句子不是以點結尾的。正則表達式在字符之後插入點(。),在新行之前
我正在爲此目的運行各種檢查,並且我還想要一個「在新行之前的最後一個字符之後添加點」。
我不知道如何形成的正則表達式是:]
$string = preg_replace("/???/", ".\n", $string);
我正在重新格式化一些文本,有時我有一個字符串,其中有一個句子不是以點結尾的。正則表達式在字符之後插入點(。),在新行之前
我正在爲此目的運行各種檢查,並且我還想要一個「在新行之前的最後一個字符之後添加點」。
我不知道如何形成的正則表達式是:]
$string = preg_replace("/???/", ".\n", $string);
試試這個:
$string = preg_replace("/(?<![.])(?=[\n\r]|$)/", ".", $string);
負回顧後(?<![.])
在檢查前一個字符是不是.
肯定lookahead (?=[\n\r]|$)
檢查下一個字符是換行符還是字符串末尾。
那個人做了這個伎倆,thx阿米戈! –
你會怎麼做,但使用re.sub? (?= [\ n \ r] | $)/「,」。「,$ string); – Silas
這樣的,我想:
<?php
$string = "Add dot after last character before new line\n";
$string = preg_replace("/(.)$/", "$1.\n", $string);
print $string;
?>
這樣的點會在句子中詞line
之後和\n
前加入。
在換行之前試用'$ string ='。'' –
這會在最後加上一個'\ n'。 – Toto
我會怎麼做:
$string = "Add dot after last character before new line\n";
$string = preg_replace("/([^.\r\n])$/s", "$1.", $string);
很好。我認爲它也處理空行。 –
感謝所有的答案,但他們沒有真正吸引所有方案的權利。
我用這個詞邊界正則表達式字符類摸索我的方式很好的解決:
// Add dot after every word boundary that is followed by a new line.
$string = preg_replace("/[\b][\n]/", ".\n", $string);
我想[\b][\n]
也可以同樣是\b\n
方括號。
給一個例子字符串 –