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