【发布时间】:2026-02-14 19:20:04
【问题描述】:
所以"XXXXX**".matches("[X{9,11}\\*{2,3}]") 按预期返回false...
但是,"XXXXX**".matches("[X{9,11}\\*{2,3}]+") 返回true。我是否正确使用了+ 量词? (我希望第二个也返回false)
【问题讨论】:
-
大多数符号在方括号中失去意义
-
值得注意的例外是
]、-,有时还有^,但绝对不是+。 -
[ ]是一个字符类,匹配括号中列出的任何一个字符。重复项被忽略。所以,[X{9,11}\*{2,3}]与[,{}\*1239X]相同,即匹配逗号、左大括号、右大括号、星号、1、2、3、9 或 X。你认为[ ]会做什么? -
如果您没有字符类,
X{9,11}\*{2,3}将匹配 9 到 11 个 X,然后是 2 或 3 个星。如果你想重复那个分组,你首先用(?: )包装使它成为一个非捕获组,然后添加+,即(?:X{9,11}\*{2,3})+