正则表达式抓住所有<,>不是XML标记的一部分

时间:2016-10-14 01:35:38

标签: regex xml

我有一个带有大量<>字符的XML文件,我不小心将其替换为&lt;&gt;。什么样的正则表达式可以选择<>,并忽略<[any word]>形式的任何字符串?这可能是不可能的,如果是这样,正则表达式忽略<Abstract>形式的字符串也很棒。

由于

1 个答案:

答案 0 :(得分:1)

你可以尝试这个开头:/<(?![a-z\/])|(?<![a-z])>/g

在此处查看:https://regex101.com/r/YPNEMU/1

它实际上会匹配<>的每个出现,这些出现之前没有字母或后跟字母或/

如果只是在一封信的旁边但是缺少打开或关闭标签,那么现在仍然匹配!

[编辑]改善正则表达式

这个更进一步匹配<出现后直接后跟字母但非结束标记的出现:/<(?![a-z\/][a-z\/ ]*?>)|(?<![a-z])>/g

在此处查看:https://regex101.com/r/YPNEMU/2

[EDIT]最佳解决方案

我发现它使用(*SKIP)(*FAIL)

/(<[a-z\/][^<>]*?>)(*SKIP)(*FAIL)|[<>]/g

在此处查看:https://regex101.com/r/YPNEMU/3