所以"XXXXX**".matches("[X{9,11}\\*{2,3}]")
按预期返回false
...
但是,"XXXXX**".matches("[X{9,11}\\*{2,3}]+")
会返回true
。我正确使用+
量词吗? (我希望第二个也返回false
)
答案 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)的全部内容必须至少发生一次(+)。
不涉及任何字符组,无需使用' []'。