重复两次正则表达式匹配字(即你好你好你好)(Regular Expression to match

2019-10-19 19:25发布

我有我的CS2教练给出一个Java正则表达式来检查,如果被重复一句话:

\\b(\\w+)\\s+\\1\\b

我怎么能修改此检查,如果一个字重复两次 ,如“你好你好你好”或“世界你好你好你好”

如果可能的话,我只是想在正确的方向指向,而不是彻底的解决方案(毕竟,我需要学习这一点)。 我想我的问题是,我不理解单词边界很好。

Answer 1:

好吧,既然你似乎想学这个自己,我给你一个有用的Oracle链接。 其次,我会建议你留意你想实现的,图案有三个相同的到底是什么。 希望帮助和效果不是太明显。 如果你需要更多的帮助评论。

编辑:对不起,我忘了第二个链接在这里。 这页也是有帮助的。



Answer 2:

首先,你需要弄清楚你被赋予了表达的解剖结构。 它描述了捕获的字字符的非空序列的字符串(\\w+)开始于一个字边界,其后是空格的一个非空序列\\s+ ,随后捕获的基团的含量,这不是一个更长的词的一部分(也就是在什么\\b确实在表达式的结尾)。

接下来,你需要建立一个描述“的字字符和空格可能为空序列”正则表达式。 这将是(?:\\w|\\s)*

现在,你已经准备好让你的表情。 你需要以下几个部分:

  • 该字字符序列相匹配的捕获组开始和结束于一个字边界
  • 字字符和空格可能为空的序列,在一个字边界结束
  • ,在一个字边界结束捕获的序列值
  • 字字符和空格的另一种可能是空的序列,在一个字边界结束
  • ,在一个字边界结束捕获的序列值


文章来源: Regular Expression to match word repeated twice (i.e. hello hello hello)