正则表达式使用? java中的运算符

时间:2012-07-28 22:39:45

标签: java regex

我有一个我想要匹配的示例字符串:"a123456.java,a12344*javaaaaaaaaaaaaa"

我使用以下正则表达式模式:Pattern p=Pattern.compile("a[0-9]+[.]?[a-zA-Z]+");

现在?运算符表示出现{0}个0次或更多次。为什么字符串"."没有被这个拾取?为什么"a12344*javaaaaaaaaaaaaa"字符不计为0?

2 个答案:

答案 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