正则表达式组合标签

时间:2017-06-14 12:10:27

标签: java regex

我有一个xml输出,如下所示

 <B-company> The  British </B-company> <I-company> Broadcasting  Corporation is a </I-company> <B-Type> public  </B-Type> <I-Type> service  broadcaster </I-Type> <HQ> headquartered   </HQ> <B-company> at  </B-company> <I-company> Broadcasting  </I-company> <B-Type> House  </B-Type> <I-Type> in  </I-Type> <HQ> London  </HQ>

这里B-tag表示Begin Tag,I-tag表示continuation tag / end标签(如果没有找到更多的I-tag)。

我正在寻找像这样的输出

<company> The  British Broadcasting  Corporation is a </company> <Type> public   service  broadcaster </Type> <HQ> headquartered   </HQ> <company> at  Broadcasting  </company> <Type> House in  </Type> <HQ> London  </HQ>

即。需要从第一个标签中删除字符“B-”,从而形成所有标签,直到我们有'/ I-'标签并添加到最后。我们如何在java正则表达式中实现这一点。

1 个答案:

答案 0 :(得分:1)

你可以试试这个正则表达式:

</[BI]-(\w+)>\s*<I-\1>|(</?)[BI]-(\w+>)

并替换为\2\3

Online demo.

它的作用:

</[BI]-(\w+)>\s*<I-\1>匹配紧跟其后是延续标记的结束标记。在第2组或第3组中没有捕获此文本,因此将删除与此匹配的所有文本。

(</?)[BI]-(\w+>)然后匹配以B-I-开头的其余标记。它会捕获第2组和第3组中B-I-周围的文字,因此,通过替换为\2\3B-I-将被有效删除。< / p>

相关问题