java - 正则表达式匹配重复两次的单词(即 hello hello hello)

标签 java regex word-boundary

我的 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/

相关文章:

Java DNS API 不工作

java - 使用 Clojure 中的 Apache Commons 编解码器解码Base64

java - 添加到 java.util.regex.Pattern 或合并它们

javascript - 使用正则表达式解析URL参数

Javascript 正则表达式引擎 : Word boundaries not matching at start of string for non-word characters

javascript - javascript中的utf-8字边界正则表达式

javascript - 如何制作考虑重音字符的正则表达式?

Java:某些情况下的 ClassCastException

java - 启动端点之前的 Spring run 方法

正则表达式:紧接着最后一个左括号之后的文本