大家好我真的需要帮助。 客户端想要替换xml标记中的某些字符串。 XML看起来如下,有数千个这样的节点。我需要匹配来自=>的部分< tuv xml:lang =“en-US”>< seg> ac0037018< / seg>包括换行。
<tu tuid="2" srclang="en-US">
<tuv xml:lang="en-US">
<seg>ac0037018</seg>
</tuv>
<tuv xml:lang="da-DK" creationdate="20130211T114451Z"
<seg>some text</seg>
</tuv>
</tu>
<tu tuid="3" srclang="en-US">
<tuv xml:lang="en-US">
<seg>Ball valves</seg>
</tuv>
<tuv xml:lang="da-DK" creationdate="20110801T083108Z" >
<seg>Kugleventiler</seg>
</tuv>
</tu>
但是我的正则表达式匹配整个xml而不是一次的实例。你能帮忙吗?
(<tuv xml:lang="en-US">)(\r\n.*)(<seg>.*?)any text(.*?</seg>)
答案 0 :(得分:1)
您可以使用以下正则表达式:
<tuv xml:lang="en-US">\s*<seg>(.+?)<\/seg>(\s*\n)
它会捕获tuv
/ seg
个片段。
我认为,你使用了太多的捕获组。
唯一合理的捕获组是seg
元素的内容。
请注意:
?
之后包含+
(不情愿版本),以防止捕获太多。如果你有
你的理由,添加任何其他捕获组。/
之前seg
(在结束标记中)使用\
进行转义,因为
典型的正则表达式分隔符只是斜杠。如果你使用其他分隔符,
你可以自由删除它。
\s
也匹配\n
或\r
。tuv
和seg
之间的换行符
打开标签?如果是这种情况,请删除最后一部分。