簡體   English   中英

正則表達式替換html標記之外的匹配關鍵字和錨點(a)標記文本

[英]Regular expression to replace match keywords outside html tags AND anchor (a) tag text

我正在開發一個asp.net應用程序。 我想添加一個關鍵字鏈接系統。

我想讓關鍵字成為另一個頁面的超鏈接。 但是,我不應該鏈接關鍵字,如果它當前鏈接(到任何頁面)。 例如:

it is a <a href="http://www.somesite.com">linked keyword</a> and it should be a linked keyword.

應轉換為:

it is a <a href="http://www.somesite.com">linked keyword</a> and it should be a linked <a href="http://newlycreatedLink.com">keyword</a>.

如您所見,第一個關鍵字應保持不變。

你能幫幫我解決這個問題嗎?

我在asp.net論壇中找到了這個鏈接 但我應該調整答案以排除當前鏈接的關鍵字。 我到處搜索但一無所獲。

要檢查關鍵字是否在“外部”, 請向前看

  • (?=如果在關鍵字之后有一個開頭<tag$ end
  • [^<>]*任何數量的字符,不是> OR <
  • 接着是(?:<\\w|$)其中\\w是word-charcters的縮寫[a-zA-Z_0-9]

所以模式看起來像:

String pattern = @"(?i)\bkeyword\b(?=[^<>]*(?:<\w|$))";

String replacement = @"<a href=\"http://newlycreatedLink.com\">\0</a>";

將關鍵字放入字邊界\\b並使用(?i) i修飾符不區分大小寫。

所以這只會替換一個開頭標記或結尾的keyword


更新 :要替換keyword也是“內部”標簽,不會以</a add |<\\/[^a]

String pattern = @"(?i)\bkeyword\b(?=[^<>]*(?:<\w|<\/[^a]|$))";

不要像這樣使用正則表達式進行復雜的HTML解析。 使用正確的HTML解析器 - 這就是原因

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM