你好,我有像
这样的字符串tda2030 100.200.300 circuit
我想检查这个字符串是否包含任何包含多于1个点的关键字(由空格分隔但可以在开头或结尾处),然后删除这些点。
结果应为
tda2030 100200300 circuit
在示例中。 我尝试了很多,但我认为我需要一个正则表达式:)提前谢谢。
答案 0 :(得分:1)
这是一个有趣的问题,因为你需要有多个点,并且事实上PCRE不允许无限宽度的外观,看看我们后面是否有一个点。我们将使用\K
和\G
来克服这一限制。
这是一个可以找到正确点的正则表达式(参见在线demo)
(?<=\w)\.(?=\w+\.)|\G\w+\K\.
使用preg_replace替换为空字符串:
$replaced = preg_replace("~(?<=\w)\.(?=\w+\.)|\G\w+\K\.~","",$string);
它是如何运作的?
我们有两个案例由|
(OR)