[英]Regex using the ? Operator in java
我有一个要匹配的示例字符串: "a123456.java,a12344*javaaaaaaaaaaaaa"
我使用以下正则表达式模式: Pattern p=Pattern.compile("a[0-9]+[.]?[a-zA-Z]+");
现在 ? 运算符表示出现0次或多次"."
。 为什么字符串"a12344*javaaaaaaaaaaaaa"
未被选中? 为什么*
字符不算作0?
如果您的意思是您希望*被*拾取.
因为那意味着“任何东西”:
在角色类内部, .
变成文字.
,而不是表示“任何内容”的字符。
如果您想匹配任何内容,请使用.?
而不是[.]?
如果您的意思是*
不是.
,则零次出现.
:
您是对的,但在您的正则表达式中, .
必须后面跟一个字母( [a-zA-Z]
),并且*
显然不是字母。
为了澄清,您有:
a -> "a"
[0-9]+ -> "12344"
[.]? -> ""
[a-zA-Z]+ -> Cannot match "*"
正确的正则表达式: a[0-9]+.*[a-zA-Z]+
[.]
表示符号.
?
平均0或1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.