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

标签 java regex

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

我尝试用|链接正则表达式,但没有找到任何东西。

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

你能帮我吗?

最佳答案

您没有找到尖括号中的内容的原因是,您并没有真正打印它。您假设 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 += " ";
}

关于java - 如何按照文本中出现的顺序获取两个正则表达式之间的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21062859/

相关文章:

java - spring security在哪里取值来替换通配符?

java - 在树状结构中迭代 n 深度

java - 通过将类骨架从服务器传输到客户端来创建服务器端类的客户端对象

java - Http Session 未过期

java - Elasticsearch Rest 客户端仍然给出 IOException : Too Many Open Files

regex - 正则表达式中 `?:`是什么意思

带数字的正则表达式重定向

tcl中的正则表达式不起作用

regex - ReSharper 5 使用模式搜索

python - 打印包含特定整数的行的行号