简体   繁体   中英

How do I find multiple substrings from one string using regex in Java?

I want to find every instance of a number, followed by a comma (no space), followed by any number of characters in a string. I was able to get a regex to find all the instances of what I was looking for, but I want to print them individually rather than all together. I'm new to regex in general, so maybe my pattern is wrong?

This is my code:

String test = "1 2,A 3,B 4,23";
Pattern p = Pattern.compile("\\d+,.+");
Matcher m = p.matcher(test);
while(m.find()) {
  System.out.println("found: " + m.group());
}

This is what it prints:

found: 2,A 3,B 4,23

This is what I want it to print:

found: 2,A
found: 3,B
found: 4,23

Thanks in advance!

试试这个正则表达式

    Pattern p = Pattern.compile("\\d+,.+?(?= |$)");

You could take an easier route and split by space, then ignore anything without a comma:

String values = test.split(' ');

for (String value : values) {
    if (value.contains(",") {
        System.out.println("found: " + value);
    }
}

What you apparently left out of your requirements statement is where "any number of characters" is supposed to end. As it stands, it ends at the end of the string; from your sample output, it seems you want it to end at the first space.

Try this pattern: "\\\\d+,[^\\\\s]*"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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