2017-07-17 10 views
-3

を無視I HTML文字列でハッシュタグを交換するには、次のC#のコードを持っており、それが良い動作しますが、彼らはコードがURLで#39を置き換え'Regex.Replaceのハッシュタグが、アポストロフィ(

として符号化するので、それはまた、アポストロフィを置き換えます。ハンバーガーのは、今、私は無視することができますどのようにHamburger&<a href\"Default.aspx?search=39">39</a>s

に変換され このようなとして正規表現のためのアポストロフィが置き換える?

public String ReplaceHashTags(string strContent) 
    { 

     string strHashtags = @"#(\w+)"; 

     strContent = Regex.Replace(strContent, strHashtags, 
     "<a href=\"Default.aspx?search=$1\">$1</a>"); 

     return strContent; 
    } 
+1

をあなたが必要としますあなたがマッチさせたいものを正確に把握する。 '#'の前に空白がある場合にのみマッチしたいと思うかもしれません。 – SLaks

答えて

1

あなたは#&が先行する場合と一致しないように正規表現を伝えることができます。

var strHashtagPattern = @"(?<!&)#(\w+)"; 

あなたはすべての可能な特殊文字のエスケープを除外したい場合は、負の先読みが良いことがあります

var strHashtagPattern = @"(?!(?<=&)#[\w\d]+;)#(\w+)";