我有一个要匹配的示例字符串:"a123456.java,a12344*javaaaaaaaaaaaaa"
我使用以下正则表达式模式:Pattern p=Pattern.compile("a[0-9]+[.]?[a-zA-Z]+");
现在 ?运算符表示 0 次或多次出现"."。为什么这个字符串"a12344*javaaaaaaaaaaaaa"没有被拾起?为什么*字符不计为 0 次出现?
如果您的意思是您希望 * 被 the 拾取,.因为这意味着“任何东西”:
在字符类中,.变成文字.,而不是表示“任何东西”的字符。
如果您想匹配任何内容,请使用.?而不是[.]?
如果您的意思*是不是.,那么零次出现.:
你是对的,但是在你的正则表达式中,.后面必须跟一个字母([a-zA-Z]),并且*显然不是一个字母。
为了澄清,你有:
a -> "a"
[0-9]+ -> "12344"
[.]? -> ""
[a-zA-Z]+ -> Cannot match "*"
正确的正则表达式:a[0-9]+.*[a-zA-Z]+
[.]平均符号.
?表示 0 或 1