繁体   English   中英

正则表达式使用? Java运算符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM