1

我的 CS2 讲师给出了一个 java 正则表达式,用于检查单词是否重复:

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

如何修改它以检查一个单词是否在“hello hello hello”或“hello world hello hello”中重复两次

如果可能的话,我只想指出正确的方向,而不是一个彻底的解决方案(毕竟,我需要学习这个)。我认为我的问题是我不太了解单词边界。

4

2 回答 2

1

首先,您需要弄清楚给出的表达式的解剖结构。它描述了一个字符串,该字符串捕获从单词边界开始的非空单词字符序列,(\\w+)后跟一个非空空格序列\\s+,然后是捕获的组的内容,它不是较长单词的一部分(这就是\\b表达式末尾的作用)。

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

现在你已经准备好表达你的意思了。你需要这些部分:

  • 匹配在单词边界开始和结束的单词字符序列的捕获组
  • 在单词边界处结束的可能为空的单词字符和空格序列
  • 以单词边界结尾的捕获序列的值
  • 另一个可能为空的单词字符和空格序列,在单词边界处结束
  • 以单词边界结尾的捕获序列的值
于 2014-04-08T02:06:25.920 回答
0

好吧,既然你似乎想自己学习这个,我会给你一个有用的Oracle 链接。 其次,我建议您注意您要达到的目标,即三个相同单词的模式。希望这会有所帮助并且不是太明显。如果您需要更多帮助,请发表评论。

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

于 2014-04-08T01:46:24.627 回答