![](/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.