说我有字符串:
" foo bar foo x foo y bar foo"
我想找到三次或更多次出现的单词,所以" foo"。
要查找多次出现的单词,我有正则表达式
\b(\w+)\b(?=.*\1)
我尝试了(\b(\w+)\b(?=.*\1)){3,}
,但这不会返回匹配项。有什么建议吗?
感谢。
答案 0 :(得分:4)
您可以使用此正则表达式:
^.*(\b\w+\b)(?<!^.*\1.*\1)(?:(?:(?!\1).)*\1){3}(?:(?!\1).)*$
<强>解释强>
^.*
:从头开始匹配。(\b\w+\b)
:匹配并捕获第1组(?<!^.*\1.*\1)
:Lookbehind在开始和组#1之间断言没有组#1
(?:(?:(?!\1).)*\1){3}
:匹配一些东西加上#1组
(?:(?!\1).)*
:匹配除组#1 (?:(?!\1).)*$
:匹配除组#1之外的任何内容