根据组选择输出

时间:2015-01-09 12:52:59

标签: java regex

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

1 个答案:

答案 0 :(得分:6)

最好使用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, "$1 " + s + " $3");
}
m.appendTail(sb);
System.out.println(sb);

<强>输出:

hello <A BYTE!> world
相关问题