我有一个xml文件,我必须匹配char<和>在标签内部并替换它们,但我抓住它们有些困难......
xml链接了这个:
<tag>text</tag>
<tag2>3 is > than 2</tag2>
<tag3>But 1 in < than 4</tag3>
我找到了使用此正则表达式的解决方案
(\s>\s|\s<\s)
包括空格,字符和另一个空格......但是如果没有空格呢?
修改实际上我需要将这些符号替换为<
和>
...
xml字段是从第三方软件获得的,该软件提供了输出xml文件,就像我上面写的那样。
我知道最好的方法是当软件读取数据时,它会编码&lt;和&gt;在xml中为<
和>
,但我希望之后有办法做到这一点
答案 0 :(得分:0)
所以基本上你收到格式错误的XML并且想要替换<
和>
并将其替换为<
和>
坏消息。使用XML通用方式的正则表达式是不可能的。尝试构建解析器。
好消息。如果您引入了一些限制(即,如果您收到的数据符合某些要求),可能会有一些好的解决方案。
您需要一种方法来区分哪些符号是标记的一部分,哪些符号是内容的一部分。
例如,如果您认为标签只有字母和数字,但中间没有空格(或其他符号),则
(?<lt><)(?:(?!\/?[[:alnum:]]*>))|(?:\s[[:alnum:]]*)(?<gt>>)
可能会奏效。您可以在https://regex101.com/r/uF0iR2/2
中使用它这是两个查询的串联|
。第一个是<
,但未遵循,但标签的其余部分。第二个是>
,但前缀是有空格的东西。我们可以避免否定前瞻?!
,但随后我们可能最终与其他“查询”发生冲突。我们不能做负面的后顾,因为不能有量词。
最后,无关,(\s>\s|\s<\s)
的另一种可能性是(\s[<>]\s)