我需要找到所有重复的单词。例如:
"abc some word abc eee word abc"
应匹配:
abc abc abc word word
或
abc word abc word abc
我试过了:"(\b\w+\b)(?=.*?\b\1\b)",但它不匹配最后一个重复的单词。p.s是否可以使用正则表达式(java或.net正则表达式引擎)找到所有重复项?
"(\b\w+\b)(?=.*?\b\1\b)"
vdgimpew1#
与其使用正则表达式,我建议简单地使用
Map<String, Integer>
键是从文本中解析出来的单词;该值表示计数器(用于出现的次数)。用1初始化计数器;当你再次找到相同的单词时,你的记忆会增加。
hwamh0ep2#
\b(\w+)\b(?=(?:(?!\b\1\b).)*\b(\1)\b(?:(?!\b\1\b).)*$)|\b(\w+)\b(?=.*?\b\3\b)
试试这个。看演示。抓住captures或groups。https://regex101.com/r/pT4tM5/31
captures
groups
mrwjdhj33#
@vks的答案可以简化为(\w+)(?=(?:(?!\1).)*\b(\1)\b)请参见下面的示例。https://regex101.com/r/3G5XV8/1
(\w+)(?=(?:(?!\1).)*\b(\1)\b)
3条答案
按热度按时间vdgimpew1#
与其使用正则表达式,我建议简单地使用
键是从文本中解析出来的单词;该值表示计数器(用于出现的次数)。用1初始化计数器;当你再次找到相同的单词时,你的记忆会增加。
hwamh0ep2#
试试这个。看演示。抓住
captures
或groups
。https://regex101.com/r/pT4tM5/31
mrwjdhj33#
@vks的答案可以简化为
(\w+)(?=(?:(?!\1).)*\b(\1)\b)
请参见下面的示例。
https://regex101.com/r/3G5XV8/1