我有一个 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 代表开始标签,I-tag 显示延续标签/结束标签(如果没有找到更多的 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 regex 中实现这一点。
你可以试试这个正则表达式:
</[BI]-(\w+)>\s*<I-\1>|(</?)[BI]-(\w+>)
并替换为\2\3
.
它能做什么:
</[BI]-(\w+)>\s*<I-\1>
匹配紧随其后的继续标签的结束标签。在第 2 组或第 3 组中没有捕获此文本,因此将删除与此匹配的所有文本。
(</?)[BI]-(\w+>)
然后匹配以B-
or开头的其余标签I-
。它捕获第2 组和第 3 组中的B-
or周围的文本I-
,因此通过替换为\2\3
,B-
orI-
被有效地删除。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句