Java 根据组选择输出
我有一些仅在一个单词中不同的字符串(例如Java 根据组选择输出,java,regex,Java,Regex,我有一些仅在一个单词中不同的字符串(例如foo字节栏和foo单词栏)。我使用多个正则表达式来解析它们(例如,(\w+)字节(\w+)->$11$2和(\w+)单词(\w+)->$12$2)是否可以根据输入字选择输出?(例如,(\w+)(\w+)(\w+)->$1$3)如果您需要更多示例,请告诉我。最好使用匹配器。appendReplacement/匹配器。appendTail如下: String input = "hello byte world"; Pattern p = Pattern.c
foo字节栏
和foo单词栏
)。我使用多个正则表达式来解析它们(例如,(\w+)字节(\w+)
->$11$2
和(\w+)单词(\w+)
->$12$2
)是否可以根据输入字选择输出?(例如,(\w+)(\w+)(\w+)
->$1$3
)如果您需要更多示例,请告诉我。最好使用匹配器。appendReplacement
/匹配器。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);
String input=“hello byte world”;
模式p=模式。编译(“(\\w+)(\\w+)(\\w+)(\\w+)”;
匹配器m=p.Matcher(输入);
StringBuffer sb=新的StringBuffer();
while(m.find()){
//计算中间词替换
串w=m组(2);
字符串s=w.equals(“字节”)?“”
:w.等于(“单词”)?“”
:“其他东西”;
m、 (sb,“$1”+s+”$3”);
}
m、 (某人);
系统输出打印LN(sb);
输出:
hello <A BYTE!> world
你好,世界
您没有说过,但我假设您使用的是replaceAll
?@t.J.Crowder是的,我可以使用这个w.equals(…)?:正则表达式中的code>吗?@kaetzacoatl:你把replaceAll
和正则表达式搞混了replaceAll
是一种使用正则表达式查找匹配项的方法,但随后会执行非正则表达式操作(如生成结果字符串)。我认为replaceAll
没有您想要的功能。aioobe在上面所做的是非常慷慨地为您做了几乎所有的工作来替换当前的replaceAll
code.@kaetzacoatl,不,在使用replaceAll时,您不能让替换成为匹配的函数。您有$1
,$2
。。。一起工作。没有办法表达它们的功能。@kaetzacoatl,我的帖子(和最后的评论)回答了你的问题吗?有什么需要澄清的吗?