我的 CS2 讲师给出了一个 java 正则表达式,用于检查单词是否重复:
\\b(\\w+)\\s+\\1\\b
如何修改它来检查某个单词是否重复两次,如“hello hello hello”或“hello world hello hello”
如果可能的话,我只是想指出正确的方向,而不是彻底的解决方案(毕竟,我需要学习这一点)。我认为我的问题是我不太了解单词边界。
最佳答案
首先,您需要弄清楚给出的表达式的结构。它描述了一个字符串,该字符串捕获从单词边界开始的非空单词字符序列 (\\w+)
,后跟非空空格序列 \\s+
,然后是捕获组的内容,该内容不是较长单词的一部分(这就是 \\b
在表达式末尾执行的操作)。
接下来,您需要构建一个正则表达式来描述“可能为空的单词字符和空格序列”。那将是 (?:\\w|\\s)*
。
现在你已经准备好表达你的想法了。您需要这些部件:
- 与在单词边界开始和结束的单词字符序列匹配的捕获组
- 以单词边界结束的可能为空的单词字符和空格序列
- 捕获的以单词边界结束的序列的值
- 另一个可能为空的单词字符和空格序列,以单词边界结束
- 捕获的以单词边界结束的序列的值
关于java - 正则表达式匹配重复两次的单词(即 hello hello hello),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22926107/