答案 0 :(得分:16)
此正则表达式将用于查找要突出显示的单词。 (例如在Javascript中,很容易在浏览器的Javascript控制台中测试。)
s = "It's a foo and a bar and a bar and a foo too.";
a = s.match(/\b(\w+)\b(?=.*\b\1\b)/g);
这将返回一个单词数组,可能是同一个单词的多次。
接下来你可以这样做:
re = new RegExp('\\b(' + a.join('|') + ')\\b', 'g');
这应该足以突出显示所有事件:
out = s.replace(re, function(m) { return '<b>' + m + '</b>' });
答案 1 :(得分:0)
例如,如果您想一个个接一个地查找多个单词
山姆went went
to to to
他的生意
您可以使用此正则表达式
s = "Sam went went to to to his business";
a = s.match(/\b(\w+)(\s\1)+\b/g);
答案 2 :(得分:0)
您可以使用此正则表达式来查找彼此相邻的连续单词。例如:"My name is Prince Prince, and I love cats."
下面的正则表达式会找到 Prince Prince
。这是最简单的版本。
(\w+)(\s\1)+
答案 3 :(得分:-2)
如果没有示例字符串,请使用测试用例和一些如何实现此目的的示例。
字符串
我的名字是詹姆斯,詹姆斯是我的名字
正则表达式
^(詹姆斯)$
组1(0通常是完全匹配字符串,可能没有捕获计数)被捕获两次。这意味着这个词重复了。您用于执行正则表达式的工具中需要一些逻辑,以便决定如何对“单词”感兴趣。
使用相同的字符串,请考虑此正则表达式
(?<=James.*)(James)
这将检测James ONLY这个词是否由'James'跟随任何角色进行。根据您的引擎,'。' (句点)应默认匹配任何不换行符。这将搜索限制在一行。
请注意必须准确指定单词的限制。我不知道如何解决这个问题。
EDIT 试试这个,这是一个很好的..
(小于?= ^ | \ S + \ 1 \ S + *)\ S +(\ W +)
使用正面lookbehind(如例2),我们检测到与当前组匹配的“整个单词”。整个单词定义为:
此外,我们所处的匹配必须是一个独立的单词(前面至少有一个空格字符)。
就结果而言,每场比赛都是重复的。