在字符串" test< test>中测试< / test>测试"我想只匹配" es":
的这些事件" t es t< test> t es t< / test>吨的 ES T"
任何人都知道如何做到这一点?
这与可能重复的 Regex replace text outside html tags不同,其结果为
" t es t< test>测试< / test> t es t",作为内部" es"没有得到匹配
更新:忘了提及< test>应该可以替换为< any stuff =" test"> ...< / any>或者<测试一些="东西"> ...< / testing>。
JavaScript正则表达式。
答案 0 :(得分:1)
如果是PCRE,你可以skip标签
<[^>]*>(*SKIP)(*F)|es
<
字面上匹配,后跟negated class [^>]*
任意数量的字符,不是>
后跟文字>
而是跳过{{1} }}或|
在剩余文本中匹配。
Demo at regex101。或者使用lookahead
es
匹配es(?![^<]*>)
字面意思es
启动否定前瞻,检查是否在结束(?!
之前没有>
。如果没有任何数量的non <
后面跟着文字<
。
答案 1 :(得分:0)
答案 2 :(得分:0)
Try /(es)(?=[^>]*(?:<|$))/g
yourself or view it in the tester
它使用正向前瞻以确保关闭角度括号以外的任何内容,直到下一个开口角括号或字符串的末尾。
请注意,look-around assertions具有不同的支持,具体取决于您使用的风格。不过,你可能会因为前瞻而幸运。