我不太热衷于正则表达式,我对此只有一些中间知识,只是为了帮助我处理日常 PHP 编程。但我面临的这个问题超出了我目前的知识范围。
我创建了一个正则表达式模式来查找 word .Word
格式的任何字符并将其替换为 word。词
正则表达式为 [\t]*\.[\t]*
并替换为 '。 '
但是,我刚刚注意到上面将省略号三个点 (...) 变成了 。 。 。
我认为这可以通过正向(或负向)前向(或后向)来解决,但我从未使用过这些方法,尽管我进行了一些尝试,但我找不到正确的组合来排除省略号' 三个点与我的正则表达式匹配。
任何帮助将不胜感激,尤其是。如果您可以将正确的缺失部分添加到我当前的正则表达式中以覆盖省略号的情况,而不是建议完全不同的部分。 TIA
最佳答案
您可以使用以下正则表达式:
(?:[ \t]+\.[ \t]*)|(?:[ \t]*\.[ \t]+)|(?<=\w)\.(?=\w)
与'. '
作为替换
输入:
word .Word #case 1
word... #case 2 (nothing should be done here)
word . Word #case3
word. Word #case 4
word.Word #case5
输出:
word. Word
word...
word. Word
word. Word
word. Word
说明:
- 使用当前的正则表达式
...
最终被处理,并在每个.
之后添加一个空格,因此我们必须添加一些约束来避免它。 -
(?:[ \t]+\.[ \t]*)
将处理案件#1
和#3
(强制要求在点之前至少有一个空格或制表符) -
(?:[ \t]*\.[ \t]+)
将处理案件#4
和#3
(强制要求点后至少有一个空格或制表符) - 剩余案例
#5
将会遇到(?<=\w)\.(?=\w)
在其中添加lookbehind/lookahead约束(在.
周围的字符上)以避免匹配...
请告诉我这是否清楚以及是否适合您!干杯。
关于php - PCRE 正则表达式删除点之前的空格,并在其后面添加一个,但也不影响省略号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50575110/