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