我正在重新格式化一些文本,有时我有一个字符串,其中有一个句子不是以点结尾的。正则表达式在字符之后插入点(。),在新行之前
我正在为此目的运行各种检查,并且我还想要一个“在新行之前的最后一个字符之后添加点”。
我不知道如何形成的正则表达式是:]
$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
方括号。
给一个例子字符串 –