忽略RegEx中的'(撇号)

时间:2013-05-13 18:01:44

标签: c# regex string string-matching substring

我有一个RegEx,并且想要忽略字符串中的任何'(撇号)。可以在讨论String manipulation: How to replace a string with a specific pattern

中找到RegEx讨论
RegEx: \\(\\s*'(?<text>[^'']*)'\\s*,\\s*(?<pname>[\\w\\[\\]]+)\\s*\\)

基本上,所提供的RegEx在{text}包含'(撇号)的情况下不起作用。你能不能让RegEx忽略{text}中的任何叛逆者?

For eg: 

substringof('B's',Name) should be replaced by Name.Contains("B's") 
substringof('B'',Name) should be replaced by Name.Contains("B'")
substringof('''',Name) should be replaced by Name.Contains("'")

欣赏它!!谢谢。

1 个答案:

答案 0 :(得分:1)

似乎很难处理案例''''。这就是为什么我选择使用委托和另一个替换来解决问题的原因。

static void Main(string[] args)
{
    var subjects = new string[] {"substringof('xxxx',Name)", "substringof('B's',Name)", "substringof('B'',Name)", "substringof('''',Name)"};

    Regex reg = new Regex(@"substringof\('(.+?)'\s*,\s*([\w\[\]]+)\)");
    foreach (string subject in subjects) {
        string result = reg.Replace(subject, delegate(Match m) { return m.Groups[2].Value + ".Contains(\"" + m.Groups[1].Value.Replace("''", "'") + "\")"; });
        Console.WriteLine(result);
    }
}