创建正则表达式以使用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*$