繁体   English   中英

匹配html标记之外的文本

[英]Match text outside of html tags

在有人说之前我知道我应该使用正确的解析器,但对于我的用例,最好使用正则表达式。

我有以下正则表达式来尝试匹配html标记之外的文本:

(?<!<[^>]*)(?<Text>.+?)

然而,这似乎与标签的开头括号匹配,即< 我怎样才能解决这个问题?

输入示例:

<span style="color:blue">some <strong>bold</strong> text</span>

预期:

some bold text

拿到:

<some <bold< text<

链接到RegexStorm。

问题是你正在使用. 匹配任何角色。 将其替换为否定字符类,如[^<>]匹配除<>任何字符并使用贪心量词* (以匹配0或更多次出现)或+ (以匹配1次或多次出现):

(?<!<[^>]*)(?<Text>[^<>]*)

请参阅正则表达式演示

顺便说一下,在模式结尾处使用(?<Text>.+?)只会使正则表达式引擎匹配1个字符,因为+? 是一个惰性量词,匹配1次或多次出现,但尽可能少(并且因为1就足够了,它总是只匹配1个字符)。 通常,在这样一个懒惰的量化之后必须有一些其他模式,否则,它通常不会获取正确的文本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM