Java:Regex:+ Quantifier不工作

时间:2018-02-20 02:53:35

标签: java regex

所以"XXXXX**".matches("[X{9,11}\\*{2,3}]")按预期返回false ... 但是,"XXXXX**".matches("[X{9,11}\\*{2,3}]+")会返回true。我正确使用+量词吗? (我希望第二个也返回false

2 个答案:

答案 0 :(得分:1)

[...]匹配字符类中定义的任何字符,所以 [X{9,11}\\*{2,3}]实际上意味着,一个字符是:X,或者是大括号,或9,或逗号,或者1,或1(是的,你有重复的),或反斜杠,或星号....

因为你的字符串在你的字符串中有多个字符要匹配,所以这种模式不匹配。

当您添加+时,表示将字符串与1个或多个[X或星号或....]匹配,因此匹配

我相信你真正想要做的就是使用一个小组。

所以正则表达式看起来像(X{9,11}\*{2,3}])+

答案 1 :(得分:0)

"XXXXXXXXX**".matches("(X{9,11}\\*{2,3})+")
"XXXXXXXX**".matches("(X{9,11}\\*{2,3})+")

匹配true和false。

(Xes和* s)的全部内容必须至少发生一次(+)。

不涉及任何字符组,无需使用' []'。