如何按文本中的出现顺序获取2个正则表达式之间的信息?

时间:2014-01-11 13:32:19

标签: java regex

如何获取<之间的信息? >和“”之间?

我尝试将正则表达式与|链接,但它没有找到任何内容。

String processed="";
Pattern pattern = Pattern.compile("\"([^\"]*)\"|<(.*?)>");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    processed += matcher.group(1);
    processed += " ";
}

你能帮助我吗?

1 个答案:

答案 0 :(得分:4)

您没有在尖括号中找到内容的原因是,您并没有真正打印它。您假设matcher.group(1)会在<>""之间为您提供匹配的群组,但它不是那样的。组根据括号编号。尝试在每次迭代时打印group 1group 2,您就会知道发生了什么。

找出问题之后,你只需删除那些捕获组,并使它们不被捕获,然后使用group(0)代替它,它将起作用:

String processed="";
Pattern pattern = Pattern.compile("\"(?:[^\"]*)\"|<(?:.*?)>");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    processed += matcher.group(0);
    processed += " ";
}