Java regex组合标签
我有一个xml输出,如下所示Java regex组合标签,java,regex,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
<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>
英国广播公司是一家公共服务广播公司,总部设在伦敦广播公司
i、 e.需要从第一个标记中删除字符“B-”,从而形成所有标记,直到我们有“/i-”标记并在末尾添加。我们如何在java正则表达式中实现这一点。您可以尝试以下正则表达式:
</[BI]-(\w+)>\s*<I-\1>|(</?)[BI]-(\w+>)
\s*|()
并替换为\2\3
它的作用是:
\s*
匹配结束标记,紧接着是继续标记。在第2组或第3组中未捕获任何文本,因此与此匹配的所有文本都将被删除
()
然后匹配以B-
或I-
开头的其余标记。它捕获了第2组和第3组中B-
或I-
周围的文本,因此通过替换为\2\3
,B-
或I-
可以有效地删除。关于使用正则表达式解析XML/HTML的内容…@Arc676如果输出是XML,则很难称之为“解析”。这些看起来像是基本的字符串操作,只是字符串恰好是xml。@Rawing,你说得对。它只是用一些标记编码的基本字符串。它不遵循正常的xml约定。在我看来,使用XML解析器似乎有点过分了。因此,在线演示站点的regex方法帮助很大。这是我想要展示我天真的正则表达式技巧的东西。非常感谢你的提问和提供正确的答案!这非常有帮助,因为我还在使用IOB标记对XML进行一些转换。