在正则表达式匹配后找到第一个单词

use*_*629 3 java regex

我如何在比赛结束后抓住第一个单词?

例如,一旦我找到Car,我该如何抓住Chevy

public class NewExtractDemo {
    public static void main(String[] args) {
        String input = "I have the following Car: Chevy, Truck: Ford, Van: Honda";

        Pattern p = Pattern.compile("(Car|Truck|Van)");
        Matcher m = p.matcher(input);

        List<String> Search = new ArrayList<String>();
        while (m.find()) {
            System.out.println("Found a " + m.group() + ".");
            Search.add(m.group());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ars*_*jii 14

使用捕获组:

(Car|Truck|Van):\s*(\w+)

现在.group(1)将返回Car.group(2)返回Chevy.


String input = "I have the following Car: Chevy, Truck: Ford, Van: Honda";

Pattern p = Pattern.compile("(Car|Truck|Van):\\s*(\\w+)");
Matcher m = p.matcher(input);

while (m.find()) {
    System.out.println(m.group(1) + "\t" + m.group(2));
}
Run Code Online (Sandbox Code Playgroud)
Car     Chevy
Truck   Ford
Van     Honda