在关注 http://docs.oracle.com/javase/tutorial/essential/regex/quant.html 的 Oracle 教程时。
输入您的正则表达式:[abc]{3}
输入要搜索的输入字符串:abccabaaaccbbbc
我发现文本“abc”从索引 0 开始,到索引 3 结束。
我发现文本“cab”从索引 3 开始,到索引 6 结束。
我发现文本“aaa”从索引 6 开始,到索引 9 结束。
我发现文本“ccb”从索引 9 开始,到索引 12 结束。
我发现文本“bbc”从索引 12 开始,到索引 15 结束。
我的期望是模式 [abc]{3} 表示 a、b 或 c> 三次但整体匹配abc为什么?
最佳答案
您正在寻找的模式是:
a{3}|b{3}|c{3}
您的模式意味着 - 匹配长度为 3
的字符串,其中包含任何字符 a
、b
或 c
.
此外,正如@Tim 在评论中指出的那样,这可以简化为:
([abc])\1\1
([abc])
匹配单个字符,并将其捕获到组 1 中。然后 \1\1
表示重复同一字符两次。
关于java - 当输入字符串为 abccabaaaccbbbc 时,为什么 Java 正则表达式模式 "[abc]{3}"与 abc 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28678857/