簡體   English   中英

C# 中的條件正則表達式問題

[英]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]

例如: ASAsq96ASApt66

更換前應滿足以下條件

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\\~\\!\\@\\#\\$\\%\\^\\&amp;
\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?)
(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.

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