我有一个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("'")
欣赏它!!谢谢。
答案 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);
}
}