我有以下类型的字符串要解析。字符串可以包含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));
}
我认为我的正则表达式,我想知道如何忽略其他组,任何建议? 目前,如果字符串与精确组匹配,则会生成结果,但它包含更多不匹配的组!
答案 0 :(得分:1)
您的正则表达式不匹配任何额外的组,因为您最后使用的是字符类[]
而不是组()
。将其更改为
(.*)-(.*)-(.*)-(.*)-(.*)-(SY[A-Z0-9]+)-(N[Y|N])(-.*?)*
另请注意,如果您在N[Y|N]
表示NY或NN,则应将其更改为N(Y|N)
,因为使用字符类[]
也会使其与N|
匹配。