根据组选择输出
Choose output depending on group
我有一些字符串只有一个词不同。(例如 foo byte bar
和 foo 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
我有一些字符串只有一个词不同。(例如 foo byte bar
和 foo 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