使用Java从字符串中提取任意5位数字
我试图使用正则表达式从一个较大的字符串中提取一个5位数字 这里是我用来做这件事的方法,但是它只返回null使用Java从字符串中提取任意5位数字,java,regex,Java,Regex,我试图使用正则表达式从一个较大的字符串中提取一个5位数字 这里是我用来做这件事的方法,但是它只返回null public void setCWBudgetCode(String webPage){ Pattern pattern = Pattern.compile("/\\b\\d{5}\b/g"); Matcher matcher = pattern.matcher(webPage); if (matcher.find()) this.cwBudget
public void setCWBudgetCode(String webPage){
Pattern pattern = Pattern.compile("/\\b\\d{5}\b/g");
Matcher matcher = pattern.matcher(webPage);
if (matcher.find())
this.cwBudgetCode = matcher.group();
}
这就是问题所在:
Pattern pattern = Pattern.compile("/\\b\\d{5}\\b/g");
而不是使用此模式
:
Pattern pattern = Pattern.compile("(\\b\\d{5}\\b)");
与Javascript不同,Java中没有正则表达式分隔符,当然也没有/g
另请注意,我在regex周围使用了括号
,这样您就可以使用matcher.group(1)
这就是问题所在:
Pattern pattern = Pattern.compile("/\\b\\d{5}\\b/g");
而不是使用此模式
:
Pattern pattern = Pattern.compile("(\\b\\d{5}\\b)");
与Javascript不同,Java中没有正则表达式分隔符,当然也没有/g
另请注意,我在正则表达式周围使用了
括号
,这样您就可以使用匹配器。组(1)
您需要更改正则表达式以将数字保存为组模式。编译(\\b(\\d{5}\\b”)代码>
这将使它与下面的组(1)
代码一起工作您需要更改正则表达式以将数字保存为组模式。编译(\\b(\\d{5})\\b”)代码>
这将使它与下面的组(1)
代码一起工作正则表达式中没有组1。只需使用group()
正则表达式中没有组1。只需使用group()
它将不起作用,因为OP使用matcher.group(1)
获取组,而没有组1。他应该使用group()
。事实上,我对所有强调group()
vagroup(1)
的做法感到很有趣。如果OP的正则表达式不正确,则所有这些都不会执行,因为find()
将失败。它不起作用,因为OP使用matcher.group(1)
获取组,而没有组1。他应该使用group()
。事实上,我对所有强调group()
vagroup(1)
的做法感到很有趣。如果OP的正则表达式是错误的,那么这一切都不会执行,因为find()
将失败。