繁体   English   中英

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

[英]Creating regex to extract 4 digit number from string using java

嗨,我正在尝试构建一个正则表达式来使用 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是一个数字, {}中的数字是您想要的数字位数。

如果你想以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字符串。

删除锚点.. 如果你想把它们放在group 1加上括号:

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

并提取matcher.group(1)

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

String mydata = "get the 0025 data from string";
Pattern pattern = Pattern.compile("(?<![-.])\\b[0-9]+\\b(?!\\.[0-9])");
Matcher matcher = pattern.matcher(mydata);
String val = "";
    if (matcher.find()) {
        System.out.println(matcher.group(0));

        val = matcher.group(0);
    }

更改matcher.group(1); matcher.group(0);

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

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

Scanner sc=new Scanner(System.in);
HashMap<String,String> a=new HashMap<>();
ArrayList<String> b=new ArrayList<>();
String s=sc.nextLine();
Pattern p=Pattern.compile("\\d{4}");
Matcher m=p.matcher(s);

while(m.find())
{
    String x="";
    x=x+(m.group(0));
    a.put(x,"0");
    b.add(x);
}
System.out.println(a.size());
System.out.println(b);

您可以找到所有匹配的数字模式和唯一模式(用于唯一使用Set<String> k=b.keySet();

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

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

而对于正好 4 位数字去

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM