![](/img/trans.png)
[英]Regular expression to replace match keywords outside html tags AND anchor (a) tag text
[英]Match text outside of html tags
在有人说之前我知道我应该使用正确的解析器,但对于我的用例,最好使用正则表达式。
我有以下正则表达式来尝试匹配html标记之外的文本:
(?<!<[^>]*)(?<Text>.+?)
然而,这似乎与标签的开头括号匹配,即<
。 我怎样才能解决这个问题?
输入示例:
<span style="color:blue">some <strong>bold</strong> text</span>
预期:
some bold text
拿到:
<some <bold< text<
问题是你正在使用.
匹配任何角色。 将其替换为否定字符类,如[^<>]
匹配除<
和>
任何字符并使用贪心量词*
(以匹配0或更多次出现)或+
(以匹配1次或多次出现):
(?<!<[^>]*)(?<Text>[^<>]*)
请参阅正则表达式演示
顺便说一下,在模式结尾处使用(?<Text>.+?)
只会使正则表达式引擎匹配1个字符,因为+?
是一个惰性量词,匹配1次或多次出现,但尽可能少(并且因为1就足够了,它总是只匹配1个字符)。 通常,在这样一个懒惰的量化之后必须有一些其他模式,否则,它通常不会获取正确的文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.