Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java从字符串中提取任意5位数字_Java_Regex - Fatal编程技术网

使用Java从字符串中提取任意5位数字

使用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

我试图使用正则表达式从一个较大的字符串中提取一个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.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()
va
group(1)
的做法感到很有趣。如果OP的正则表达式不正确,则所有这些都不会执行,因为
find()
将失败。它不起作用,因为OP使用
matcher.group(1)
获取组,而没有组1。他应该使用
group()
。事实上,我对所有强调
group()
va
group(1)
的做法感到很有趣。如果OP的正则表达式是错误的,那么这一切都不会执行,因为
find()
将失败。