2011-07-08 8 views
0

パターン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]Cでの条件付き正規表現の問題

例:として表示:ASAsq96又はASApt66

それは任意のhrefのリンク

<ahref="samplesample?=ASAsq96\%#');"</a> 
以内に発生した場合、以下の条件を交換するべきではありません

1.パターンを発生する必要があり、交換する前に満たされるべきです//リンク

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.Butそれが唯一のタイプ

の特定のハイパーリンク内に存在する場合、パターンを交換する必要があります。

2.パターンは、それがどののhttp以内に発生した場合に交換するべきではありません

http://replaceme/ASA[a-z][a-z][0-9][0-9] 

4.All他の既存のパターンが外部

正規表現ここで完全に満たす条件を交換する必要があります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>"); 

答えて

0

あなたは、単一の正規表現に異なる条件の束を結合しようとしている正当な理由はありますか?私は各条件ごとに別々の式を持っています。これにより、あなたのパターン(そしてロジック)をより読みやすくすることができます。

+0

具体的な理由はありませんが、交換が行われる前にこれらの条件がすべて必要です。これらの条件を分けて実行する方法はありますか? – thinkcool