[英]Conditional Regex Problem in C#
我想匹配一個模式 ASA[az][az][0-9][0-9] 並將它們替換為嵌入式超鏈接 http://www.stack.com?order=ASA[az][az][0 -9][0-9] 並將其顯示為 ASA[az][az][0-9][0-9]
更換前應滿足以下條件
1.如果出現在任何href鏈接中,則不應替換該模式
<ahref="samplesample?=ASAsq96\%#');"</a>
2.如果出現在http://鏈接中,則不應替換該模式
http://www.test.com/ASA[a-z][a-z][0-9][0-9]/example
http://www.stack.com/ASA[a-z][a-z][0-9][0-9]
3.但是,如果模式只存在於特定類型的超鏈接中,則應替換該模式
http://replaceme/ASA[a-z][a-z][0-9][0-9]
4.所有其他現有的模式都應該被替換
這里的正則表達式完全滿足條件 2 和 4 。 如何將條件 1 和 3 合並到此正則表達式中。 我正在使用 HTML 主體來處理主體。
mail.HTMLBody = Regex.Replace(mail.HTMLBody,
"(?<!http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&
\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?)
(ASA[a-z][a-z][0-9][0-9])(?!</a>)",
"<a href=\"http://www.stack.com?order=$&\">$&</a>");
您嘗試將一堆不同的條件組合成一個正則表達式是否有充分的理由? 對於每個條件,我都有一個單獨的表達式。 這將使您的模式(和邏輯)更具可讀性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.