自动在句号和逗号后添加空格,同时避免数字。

3
这是我目前用于清理句子的正则表达式,当人们写出以下内容时:

Hello.I'm Andres,right?

它将被自动转换为:

Hello. I'm Andres, right?

当字符串中有数字时,问题就出现了。例如:

I have 40.381,32 dollars.

...将被转换为:

I have 40. 381, 32 dollars.

我的当前代码:
echo preg_replace( '/[!?,.](?![!?,.\s])/', '$0 ', 'Hello my friend.There should be a space after sentence periods and commas, but that should not apply to 40.381,32 numbers.');

问题:当,.字符在数字之间时,如何避免这些规则被应用?谢谢!

1个回答

4

使用正则表达式模式

(?<!\d)[.,!?](?!\d)

或者

(?<!\d)[.,!?](?![.,!?\d])

不确定 PHP 是否支持后顾断言。 - John Dvorak
2
@JanDvorak - 但我百分之百确定它是有效的 :) - Ωmega
工作得非常好!(我将在大约8分钟后选择您的解决方案作为被接受的答案,哈哈,stackoverflow现在不让我这样做) - Andres SK
PHP的preg_*函数使用PCRE,支持向后查找。这是有关前后查找的PHP手册 - Wiseguy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接