c#中的条件正则表达式问题
本文关键字:正则表达式 问题 条件 | 更新日期: 2023-09-27 18:01:30
我想匹配一个模式ASA[a-z][a-z][0-9][0-9]并将它们替换为嵌入的超链接http://www.stack.com?order=ASA[a-z][a-z][0-9][0-9]并显示为ASA[a-z][a-z][0-9][0-9]
例如:ASAsq96或ASApt66
更换前应满足以下条件
1。如果模式出现在任何href link
中,则不应替换该模式。<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来处理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>");
是否有一个很好的理由,为什么你试图将一堆不同的条件组合成一个正则表达式?每个条件都有一个单独的表达式。这将使你的模式(和逻辑)更具可读性。