使用正则表达式从字符串中提取单词

时间:2016-08-03 09:15:05

标签: c# regex

我想使用正则表达式从字符串中提取某些单词。

我现在有了这个代码,当我搜索*

时它完美无缺
public static string Tagify(string value, string search, string htmlTag, bool clear = false)
    {
        Regex regex = new Regex(@"\" + search + "([^)]*)\\" + search);
        var v = regex.Match(value);

        if (v.Groups[1].ToString() == "" || v.Groups[1].ToString() == value || clear == true)
        {
            return value.Replace(search, "");
        }

        return value.Replace(v.Groups[0].ToString(), "<" + htmlTag + ">" + v.Groups[1].ToString() + "</" + htmlTag + ">");
    }

但是现在我需要搜索**,但遗憾的是这不起作用 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

我认为最简单的解决方案是在捕获组中使用延迟点匹配。

替换

Regex regex = new Regex(@"\" + search + "([^)]*)\\" + search);

Regex regex = new Regex(string.Format("{0}(.*?){0}", Regex.Escape(search)));

或者在C#6.0中

Regex regex = new Regex($"{Regex.Escape(search)}(.*?){Regex.Escape(search)}");

Regex.Escape将为您转义任何特殊字符,无需手动附加\符号。