簡體   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