java正则表达式示例匹配没有长度限制

时间:2014-12-03 08:06:00

标签: java regex expression limit

我试着写一个正则表达式匹配一个以字母“G”开头的字符串,第二个索引应该是任意数字(0-9),其余的字符串可以包含任何东西,可以是任意长度, 我陷入了以下代码

String[] array = { "DA4545", "G121", "G8756942", "N45", "4578", "#45565" };

String regExp = "^[G]\\d[0-9]";

for(int i = 0; i < array.length; i++) 
{
    if(Pattern.matches(regExp, array[i])) 
    {
        System.out.println(array[i] + " - Successful");
    }
}

输出

G12 - 成功

为什么不匹配3指数“G8756942”

6 个答案:

答案 0 :(得分:0)

当你写\d时,它已经意味着[0-9]

所以当你说\d[0-9]时,这意味着两位数正好

更好地使用:

^G\\d*

将匹配以G开头并且具有零个或多个数字的所有单词

答案 1 :(得分:0)

这个正则表达式没问题。

"G\\d.*"

由于matches方法会尝试匹配整个输入,因此您需要在模式的最后添加.*,并且您也不需要包含锚点。

String[] array = { "DA4545", "G121", "G8756942", "N45", "4578", "#45565" };

String regExp = "G\\d.*";

for(int i = 0; i < array.length; i++) 
{
    if(Pattern.matches(regExp, array[i])) 
    {
        System.out.println(array[i] + " - Successful");
    }
}

输出:

G121 - Successful
G8756942 - Successful

答案 2 :(得分:0)

"^[G]\\d[0-9]"

此正则表达式匹配&#34; G&#34;然后是\\d,然后是另一个数字。

使用以下其中一项:

  • "^G\\d"
  • "^G[0-9]"

另请注意,您不需要字符类,因为它只包含一个字母,所以它是多余的。

答案 3 :(得分:0)

尝试此正则表达式.*将匹配数字

之后的任何字符
^G\\d.*

http://regex101.com/r/uE4tX1/1

答案 4 :(得分:0)

G - the letter G
[0-9] - a digit
.* - any sequence of characters

所以表达式

G[0-9].*

将匹配字母G后跟一个数字,后跟任意字符序列。

答案 5 :(得分:0)

  

为什么不匹配3指数“G8756942”

因为您匹配以G开头的字符串,后跟\d和一个数字。解决方案:

^[G]\d