java - 在 Java-Regex 中匹配多个组

标签 java regex

是否可以在正则表达式中找到与字符串的特定部分匹配的所有组?

    Pattern pattern = Pattern.compile("(green trousers)|(green\\s+t)");
    Matcher matcher = pattern.matcher("my beautiful green trousers are red!");
    while (matcher.find()) {
        for (int i = 1; i <= matcher.groupCount(); i++) {
            if (matcher.group(i) != null) {
                System.out.println("group " + i + " matched");
            }
        }
    }

此示例仅返回第一组作为匹配,但我也对第二组也匹配这一事实感兴趣。

最佳答案

没有直接的方法可以做到这一点,正则表达式将从左到右使用字符串,直到找到匹配项。

使用 | 意味着它将首先检查第一个替代方案,如果不匹配,则回溯并尝试第二个替代方案。在本例中,(green trousers) 匹配,因此搜索停止并返回匹配项。

关于java - 在 Java-Regex 中匹配多个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38221916/

相关文章:

java - 关闭 Undertow 上的 MYSQL 连接

java - Microstrategy Web API - JAVA SDK

java - 如何在特定栏上书写?

python - 根据 Python 中的模式拆分字符串

java - 编码 utf 8 java jdbc oracle

java - 使用 SSL 在负载平衡环境中设置 flex 应用程序的问题

php - 正则表达式在字符上拆分字符串,内部字符串除外

Java 程序 - 使用字符串和正则表达式验证电子邮件地址

c# - 将 C# 正则表达式转换为 Java 正则表达式

python - 用于在文本中查找字母和数字单词的正则表达式