代码之家  ›  专栏  ›  技术社区  ›  CSchulz cL83

找到匹配项,但如何提取数据?

  •  -1
  • CSchulz cL83  · 技术社区  · 14 年前

    我有以下正则表达式 (abc|def)( ?(\\d+|(?:(?!\\1)[a-z])+)?)* 完全符合主题 abc123 456
    现在我要得到所有的零件 abc公司 123 456

    我使用以下代码:

    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(subject);
    
    while(m.find())
    {
        System.out.println(m.group());
    }
    

    但我只得到 abc123 456公司 .

    欢迎提出任何意见。

    2 回复  |  直到 11 年前
        1
  •  1
  •   Cem Catikkas    14 年前

    m.group() . 这个 javadoc 声明 相当于 m.group(0) m.group(int) 版本。因此,下面的断言应该如您所期望的那样反映分组。

    Assert.assertEquals("abc", m.group(1));
    Assert.assertEquals("123", m.group(2));
    Assert.assertEquals("456", m.group(3));
    
        2
  •  0
  •   CSchulz cL83    14 年前

    是的,它工作,但我注意到,我可以 命令,然后是 按空格分隔的参数。我呢 想办法找到他们。但我 你觉得切断电源比较容易吗 命令和空间分割,不是吗?