我正在尝试找到一种使用正则表达式在网页上查找重复单词的方法,我一无所知,如果使用不正确的术语,请提前道歉。
到目前为止,我发现以下正则表达式非常有效,但仅适用于连续的单词(例如,hello hello),但不适用于放置在网页不同部分或由另一个单词分隔的单词(例如,hello food hello) )
\b(\w+)(\s+\1\b)*
\b(\w+(?:\s*\w*))\s+\1\b
我将非常感谢能为您提供帮助的任何人,因为我基本上是个菜鸟,所以我意识到自己可能不在正确的位置。
答案 0 :(得分:0)
捕获组中的第一个单词(由单词边界包围),然后在之间重复可选字符后,在超前查找中对其进行反向引用:
\b(\w+)\b(?=.*\b\1\b)
答案 1 :(得分:0)
我将使用Jsoup从网页获取文本。然后,您可以使用HashMap跟踪计数,然后在地图上搜索所需的任意次数:
String url = "https://en.wikipedia.org/wiki/Jsoup";
String body = Jsoup.connect(url).get().body().text();
Map<String,Integer> counts = new HashMap<>();
for ( String word : body.split(" ") )
{
counts.merge(word, 1, Integer::sum);
}
for ( String key : counts.keySet() )
{
if ( counts.get(key) >= 2 )
{
System.out.println(key + " occurs " + counts.get(key) + " times.");
}
}
您可能需要清理地图以清除一些不是单词的条目,但这将为您提供大部分帮助。