我想匹配模式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 body来处理正文。
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>");
答案 0 :(得分:0)
有没有充分的理由说明为什么要将一堆不同的条件组合成一个正则表达式?我为每个条件都有一个单独的表达式。这将使您的模式(和逻辑)更具可读性。