Regex 正则表达式在同一行重复单词

Regex 正则表达式在同一行重复单词,regex,Regex,正则表达式查找在同一行上重复的单词?我尝试了在StackOverflow as上找到的一些表达式,但没有一个能正常工作 我希望我能用图像更好地解释我想要达到的结果。谢谢你的耐心 在没有示例字符串的情况下,让我们使用一个测试用例和几个示例来说明如何实现这一点 串 我叫詹姆斯,詹姆斯是我的名字 正则表达式 ^(詹姆斯)$ 组1(0通常是完全匹配字符串,可能没有捕获计数)被捕获两次。这意味着这个词是重复的。在您用来执行正则表达式的工具中需要一些逻辑,以便决定您是否对“word”感兴趣 使用相同的字符串

正则表达式查找在同一行上重复的单词?我尝试了在StackOverflow as上找到的一些表达式,但没有一个能正常工作

我希望我能用图像更好地解释我想要达到的结果。谢谢你的耐心


在没有示例字符串的情况下,让我们使用一个测试用例和几个示例来说明如何实现这一点

我叫詹姆斯,詹姆斯是我的名字

正则表达式

^(詹姆斯)$

组1(0通常是完全匹配字符串,可能没有捕获计数)被捕获两次。这意味着这个词是重复的。在您用来执行正则表达式的工具中需要一些逻辑,以便决定您是否对“word”感兴趣

使用相同的字符串,考虑此正则表达式< /P>

(?<=James.*)(James)
s = "Sam went went to to to his business";
a = s.match(/\b(\w+)(\s\1)+\b/g);

(?此正则表达式用于查找要突出显示的单词。(Javascript示例,易于在浏览器的Javascript控制台中测试。)

这将返回一个单词数组,可能是同一单词的多次

接下来,您可以执行以下操作:

re = new RegExp('\\b(' + a.join('|') + ')\\b', 'g');
这应该足以突出所有事件:

out = s.replace(re, function(m) { return '<b>' + m + '</b>' });
out=s.replace(re,函数(m){return'+m+'});

例如,如果您想找到多个紧跟其后的单词 萨姆去了他的公司

你可以使用这个正则表达式

(?<=James.*)(James)
s = "Sam went went to to to his business";
a = s.match(/\b(\w+)(\s\1)+\b/g);

一些输入和输出示例会有所帮助。什么是“单词”?什么在您以前的尝试中不起作用?您使用的是哪种编程语言/工具/环境(即哪种正则表达式风格)?“单词”是什么?任何单词。您以前的尝试中有什么不起作用?我的问题链接中有一个示例。您使用的是哪种编程语言/工具/环境(即哪种正则表达式风格)?任何文本编辑器,例如SublimiteText、notepad++…我看不出链接问题中有什么不起作用。“任何单词”不是真的有帮助。只有字母?或者单词的正则表达式定义?(字母、数字、下划线)。是
不是
一个单词吗?仅仅因为你链接了一个提供输入/输出示例的问题并不能使你自己的问题更完整。如果我们有一些实际的示例输入,这将非常有帮助。还有“在同一行重复的单词”-是否必须是连续的(如在链接的问题中)?或者您想在
foo bar foo
中找到在同一行重复的
foo