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''~''!''@''#''$''%''^''&amp;
''*''('')_''-''=''+''''''/''?''.'':'';''''',]*)?)
(ASA[a-z][a-z][0-9][0-9])(?!</a>)", 
"<a href='"http://www.stack.com?order=$&'">$&</a>");

c#中的条件正则表达式问题

是否有一个很好的理由,为什么你试图将一堆不同的条件组合成一个正则表达式?每个条件都有一个单独的表达式。这将使你的模式(和逻辑)更具可读性。