Проблема условного регулярного выражения в C # - PullRequest
0 голосов
/ 08 июля 2011

Я хочу сопоставить шаблон 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]

Например: ASAsq96 или ASApt66

Перед заменой должны быть выполнены следующие условия

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>");

1 Ответ

0 голосов
/ 08 июля 2011

Есть ли веская причина, по которой вы пытаетесь объединить несколько различных условий в одно регулярное выражение? У меня было бы отдельное выражение для каждого условия. Это сделает ваш шаблон (и логику) намного более читабельным.

...