根据组选择输出

Choose output depending on group

我有一些字符串只有一个词不同。(例如 foo byte barfoo word bar)。我使用多个正则表达式来解析它们。(例如 (\w+) byte (\w+) -> 1 (\w+) word (\w+) -> 2 )是否可以根据输入词选择输出? (例如 (\w+) (\w+) (\w+) -> <depending on > )如果您需要更多示例,请告诉我。

最好使用 Matcher.appendReplacement / Matcher.appendTail 解决,如下所示:

String input = "hello byte world";

Pattern p = Pattern.compile("(\w+) (\w+) (\w+)");
Matcher m = p.matcher(input);

StringBuffer sb = new StringBuffer();
while (m.find()) {

    // Compute replacement for middle word
    String w = m.group(2);
    String s = w.equals("byte") ? "<A BYTE!>"
             : w.equals("word") ? "<A WORD!>"
             : "something else";

    m.appendReplacement(sb, " " + s + " ");
}
m.appendTail(sb);
System.out.println(sb);

输出:

hello <A BYTE!> world