使用正则表达式
来自任何至少有一个单词重复两次或更多次的输入行。
这是我有多远。
/(\ B \ W + \ b)中。* \ 1
但这是错误的,因为它只检查单个字符,而不是一个字。
输入:我可能生病了
输出:<我可能是我> ll
<>标记匹配的部分。
所以,我尝试做(\ b \ w + \ b)(\ b \ w + \ b)* \ 1 但它并没有完全发挥作用。
有人可以帮忙吗?
感谢。
答案 0 :(得分:0)
这应该有效
(\b\w+\b).*\b\1\b
贪婪算法将确保最长匹配。如果你想要第二个实例是一个单独的单词,你也必须在那里添加边界。所以和
一样\b(\w+)\b.*\b\1\b
答案 1 :(得分:0)
要查看重复的字词,您可以使用positive lookahead
这样的内容。
正则表达式: (\b[A-Za-z]+\b)(?=.*\b\1\b)
说明:
(\b[A-Za-z]+\b)
会抓住任何字词。
(?=.*\b\1\b)
将会前瞻。如果是,则找到匹配。
注意: - 这会产生重复的结果,因为当正则表达式指针 将其作为单词捕获时,匹配一次的单词将再次匹配
您必须使用编程去除重复的结果。
<强> Regex101 Demo 强>
答案 2 :(得分:0)
Positive lookahead
不是必须的:
/\b([A-Za-z]+)\b[\s\S]*\b\1\b/g
<强>说明强>
\b([A-Za-z]+)\b # match any word
[\s\S]* # match any character (newline included) zero or more times
\b\1\b # word repeated