我有一个我想要匹配的示例字符串:"a123456.java,a12344*javaaaaaaaaaaaaa"
我使用以下正则表达式模式:Pattern p=Pattern.compile("a[0-9]+[.]?[a-zA-Z]+");
现在?运算符表示出现{0}个0次或更多次。为什么字符串"."
没有被这个拾取?为什么"a12344*javaaaaaaaaaaaaa"
字符不计为0?
答案 0 :(得分:6)
如果您的意思是您希望.
选择*,因为这意味着“任何事情”:
在角色类中,.
成为文字.
,而不是“任何”字符。
如果您想匹配任何内容,请使用.?
代替[.]?
如果您的意思是*
不是.
,那么.
的出现次数为零:
你是对的,但在你的正则表达式中,.
后面必须跟一个字母([a-zA-Z]
),而*
显然不是一封信。
澄清一下,你有:
a -> "a"
[0-9]+ -> "12344"
[.]? -> ""
[a-zA-Z]+ -> Cannot match "*"
答案 1 :(得分:0)
正确的正则表达式:a[0-9]+.*[a-zA-Z]+
[.]
表示符号.
?
表示0或1