Regex.Replace hashtags但忽略撇号(

时间:2017-07-17 23:32:14

标签: c# regex

我有以下C#代码替换HTML字符串中的主题标签并且它运行良好但它也替换了撇号,因为它们编码为'

代码用URL替换#39。 例如汉堡包现已转换为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 个答案:

答案 0 :(得分:1)

如果#前面有&,您可以告诉正则表达式不匹配:

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

如果你想排除所有可能的特殊字符转义,那么负向前瞻可能会更好:

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