忽略& # 39;(撇号)从RegEx

本文关键字:撇号 RegEx 忽略 | 更新日期: 2023-09-27 18:13:16

我有一个RegEx,并希望忽略字符串中的任何'(撇号)。正则表达式的讨论可以在字符串操作的讨论中找到:如何用特定的模式替换字符串

RegEx: ''(''s*'(?<text>[^'']*)'''s*,''s*(?<pname>[''w''['']]+)''s*'')

基本上提供的RegEx在{text}包含'(撇号)的场景中不起作用。你能让正则表达式忽略{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("'")

欣赏它! !谢谢你。

忽略& # 39;(撇号)从RegEx

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

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);
    }
}