我想匹配像 abc abc
这样的重复词。这是正则表达式:
(\w+)(\s\1)+
这对像这样的字符串很有用:
pds dd dd dd dd sd
并匹配 dd dd dd dd
作为一个组和 "dd"
, "dd"
但这不是我要找的.
我想单独匹配 dd
,就像围绕 ""
拆分并返回 4 dd
的拆分语句一样。除了单个正则表达式之外,我不寻找任何其他方法。这可以使用两个正则表达式来完成,但我想知道是否可以在一个正则表达式中编写?
最佳答案
我最终使用了这个正则表达式:
(\w+)(?(?=\s+\1\s+\1)|\s+\K(\1))
它不需要解释,因为正则表达式在 Regex101 中有很清楚的解释。 .
(?something|anotherthing)
看起来像一个 if else
语句。如果存在 something
,则匹配它,否则尝试查找 anotherthing
。
在上面的正则表达式中,TRUE
为 null
,因此正则表达式有效。
这是 revo 编写的另一个正则表达式它不捕获多个组:
(?|\b(\w+)(?= +\1\b) +|\G(?!^)(\w+))
关于php - 匹配重复的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55793465/