java正则表达式忽略字符串末尾的n组

时间:2013-08-08 15:31:02

标签: java regex

我有以下类型的字符串要解析。字符串可以包含n组。但我只对第5组和第6组感兴趣。 XXXX-XXX-XXXX-XXX-XXXX-XXX-XX-XXX-XXX

目前正在处理以下类型的表达式:

(.*)-(.*)-(.*)-(.*)-(.*)-(SY[A-Z0-9]+)-(N[Y|N])[-(.*)]*

    if (matcher.matches()) {
        System.out.println(matcher.group(5));
        System.out.println(matcher.group(6));
    }

我认为我的正则表达式,我想知道如何忽略其他组,任何建议? 目前,如果字符串与精确组匹配,则会生成结果,但它包含更多不匹配的组!

1 个答案:

答案 0 :(得分:1)

您的正则表达式不匹配任何额外的组,因为您最后使用的是字符类[]而不是组()。将其更改为

(.*)-(.*)-(.*)-(.*)-(.*)-(SY[A-Z0-9]+)-(N[Y|N])(-.*?)*

另请注意,如果您在N[Y|N]表示NY或NN,则应将其更改为N(Y|N),因为使用字符类[]也会使其与N|匹配。