我正在寻找将类似sql的语句转换为等效的正则表达式,即
LIKE '%this%' LIKE 'Sm_th' LIKE '[C-P]arsen'
这样做的最佳方法是什么?
附:我希望在.Net Framework(C#)上执行此操作.
解决方法
以下正则表达式在
@L_502_0@委托的帮助下将类似sql的模式转换为正则表达式模式.它正确处理方括号块并转义特殊的正则表达式字符.
string regexPattern = Regex.Replace( likePattern,@"[%_]|\[[^]]*\]|[^%_[]+",match => { if (match.Value == "%") { return ".*"; } if (match.Value == "_") { return "."; } if (match.Value.StartsWith("[") && match.Value.EndsWith("]")) { return match.Value; } return Regex.Escape(match.Value); });