String p = "(a|ab|c)*";
String s = "aabcab";
Boolean b = s.matches(p);
System.out.println(b);
此模式“ p”匹配:
1) 0 or more single 'a': a, aa, aaa
2) 0 or more single 'ab': ab, abab, ababab
3) 0 or more single 'c': c, cc, ccc
为什么它与“ aabcab”匹配?在上面的3种模式中,没有任何由字符“ a”,“ b”和“ c”组成的字符串
答案 0 :(得分:3)
Kleene星号运算不会分布在其他选项上:您最可能寻找的规则是:(a*)|(ab)*|(c*)
。
您的模式p
将匹配形成的任何字符序列,这些字符序列是零次或多次重复给定三个给定替代中的任何一个,而不是每种类型的重复可能不会混合。