REGEX有两个捕获组

时间:2014-07-31 18:12:20

标签: java regex

我需要一些正则表达式的帮助:

我在regex101中有这个示例代码:

http://regex101.com/r/iW8hP4/4

dsgssgdfgdsfg <result1>A1<result1>
anythingiwith<>and"234and
newlinesandsoon
<result>B1<result>
againanything
dsgssgdfgdsfg <result1>A2<result1>
anythingiwith<>and"234and
newlinesandsoon

againanything
dsgssgdfgdsfg <result1>A3<result1>
anythingiwith<>and"234and
newlinesandsoon
<result>B3<result>
againanything

结果我想要3个结果和2个捕获组(这里:CG),它应该是

结果1:1CG:A1 2CG:B1

结果2:1CG:A2 2CG:null或只是空

结果3:1CG:A3 2CG:B3

如何解决这个问题,以及当某些东西不存在时如何获得null / empty?

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

<result1>(.*?)<result1>(?:(?:.(?!<result1>))*?<result>(.*?)<result>)?

可以在第1组和第2组(如果存在)中获取您的文本。这个正则表达式将给出:

MATCH 1
1.  `A1`
2.  `B1`

MATCH 2
1.  `A2`

MATCH 3
1.  `A3`
2.  `B3`

RegEx Demo