1

我有以下类型的字符串要解析。字符串可以包含 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));
    }

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

4

1 回答 1

1

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

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

另外,请注意,如果您的意思是 NY 或 NN,N[Y|N]则应将其更改为,N(Y|N)因为使用字符类[]也使其匹配N|

于 2013-08-08T15:45:52.790 回答