有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在Java正则表达式中获取组的模式?

假设给我一个正则表达式模式,whole_pattern

Pattern p = Pattern.compile(whole_pattern);
Matcher m = p.matcher(line);
if (m.find()) {
    String s1 = m.group(1);
    String s2 = m.group(2);        
}

显然,我们可以得到每组的匹配字符串。但是我们能得到whole_pattern字符串中每个组的模式吗?例如,如果whole_pattern = (\\d+)(\\w+),则组1和组2的模式分别为\\d+\\w+


共 (2) 个答案

  1. # 1 楼答案

    您可以将regexp用于regexp:

    public void simpleTest() {
        String whole_pattern = "(\\d+)(\\w+)";
        System.out.println(patternGroups(whole_pattern));
    }
    
    private List<String> patternGroups(String patternString) {
        List<String> result = new ArrayList<>();
    
        String pattern = "\\(([^()]+)\\)";
        Pattern p = Pattern.compile(pattern);
    
        Matcher m = p.matcher(patternString);
        while (m.find()) {
            result.add(m.group(1));
        }
        return result;
    }
    

    simpleTest()调用的输出将是:

    [\d+, \w+]
    
  2. # 2 楼答案

    将模式字符串拆分为,并删除结果数组中每个元素的第一个字符