我试着写一个正则表达式匹配一个以字母“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”
答案 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)
答案 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