Java 所有重复的单词
我需要找到所有重复的单词。 例如:Java 所有重复的单词,java,.net,regex,Java,.net,Regex,我需要找到所有重复的单词。 例如: "abc some word abc eee word abc" 应匹配: abc abc abc word word 或 我尝试过:“(\b\w+\b)(?=*?\b\1\b)”但它与最后一个重复的单词不匹配 p、 是否可以使用正则表达式(java或.net正则表达式引擎)查找所有重复项 Map<String, Integer> Map 键是从文本中解析的单词;该值表示一个计数器(用于出现的次数)。用1初始化计数器;当你再次找到同一个词
"abc some word abc eee word abc"
应匹配:
abc abc abc word word
或
我尝试过:“(\b\w+\b)(?=*?\b\1\b)”
但它与最后一个重复的单词不匹配
p、
是否可以使用正则表达式(java或.net正则表达式引擎)查找所有重复项
Map<String, Integer>
Map
键是从文本中解析的单词;该值表示一个计数器(用于出现的次数)。用1初始化计数器;当你再次找到同一个词时,它会增加
\b(\w+)\b(?=(?:(?!\b\1\b).)*\b(\1)\b(?:(?!\b\1\b).)*$)|\b(\w+)\b(?=.*?\b\3\b)
试试这个。参见演示。抓取捕获
或组
因为
(?=.*\b\1\b)
是一个断言,所以它不会匹配任何字符;你为什么要用正则表达式呢?性能无关吗?特别是对于这项任务,性能并不重要。主要目标是使用正则表达式(或者几乎是正则表达式)来实现,为什么不按照EddyG的建议扫描文本输入并构建一个映射呢
\b(\w+)\b(?=(?:(?!\b\1\b).)*\b(\1)\b(?:(?!\b\1\b).)*$)|\b(\w+)\b(?=.*?\b\3\b)