创建正则表达式以使用java从字符串中提取4位数字

嗨,我正在尝试构建一个正则表达式,使用java从给定的字符串中提取4位数。 我尝试了以下方式:

String mydata = "get the 0025 data from string"; Pattern pattern = Pattern.compile("^[0-9]+$"); //Pattern pattern = Pattern.compile("^[0-90-90-90-9]+$"); //Pattern pattern = Pattern.compile("^[\\d]+$"); //Pattern pattern = Pattern.compile("^[\\d\\d\\d\\d]+$"); Matcher matcher = pattern.matcher(mydata); String val = ""; if (matcher.find()) { System.out.println(matcher.group(1)); val = matcher.group(1); } 

但它不能正常工作。 这该怎么做。 需要一些帮助。 谢谢。

将模式更改为:

 Pattern pattern = Pattern.compile("(\\d{4})"); 

\d表示数字, {}中的数字是您想要的数字。

删除锚点..如果你想在group 1放置paranthesis:

 Pattern pattern = Pattern.compile("([0-9]+)"); //"[0-9]{4}" for 4 digit number 

并提取出matcher.group(1)

如果你想以0025结束,

 String mydata = "get the 0025 data from string"; mydata = mydata.replaceAll("\\D", ""); // Replace all non-digits 
 Pattern pattern = Pattern.compile("\\b[0-9]+\\b"); 

这应该为你做。 ^$将与整个字符串进行比较。它将匹配仅包含numbers字符串。

许多更好的答案,但如果你仍然必须以相同的方式使用。

 String mydata = "get the 0025 data from string"; Pattern pattern = Pattern.compile("(? 

改变了matcher.group(1); to matcher.group(0);

您可以使用\d{4}[0-9]{4}但请注意,通过在正则表达式的开头指定^ ,在结尾指定$ ,您将自己限制为包含4位数的字符串。

我的推荐:学习一些正则表达式的基础知识。

如果要匹配任意数量的数字,请使用如下模式:

 ^\D*(\d+)\D*$ 

正好4位数

 ^\D*(\d{4})\D*$