我正在尝试编写一个c#搜索函数,它支持SQL中的“%”,就像搜索中的运算符一样。 例如,
“%m%”将匹配以下所有字符串。
“%m%e”将匹配类似“some”的字符串。
答案 0 :(得分:5)
static bool Like(string expression, string value)
{
return Regex.IsMatch(value, "^" +
Regex.Escape(expression).Replace("%", @"[\s\S]*?") + "$",
RegexOptions.IgnoreCase);
}
答案 1 :(得分:3)
public bool SqlWildcardMatch(string input, string sqlLikePattern)
{
sqlLikePattern = Regex.Replace(sqlLikePattern, "^([^%])", "^$1");
sqlLikePattern = Regex.Replace(sqlLikePattern, "([^%])$", "$1$$");
return Regex.IsMatch(input, string.Replace(sqlLikePattern, "%", ".*"));
}
此函数可能需要精炼以确保sqlLikePattern
不会产生无效的正则表达式模式,但请将其视为起点。
答案 2 :(得分:1)
如果你想让SQL的LIKE
处理下划线,你可以使用我对C# Version Of SQL LIKE的回答,如果没有,你可以删除Replace('_', '.')
位。
答案 3 :(得分:0)
答案 4 :(得分:0)
使用regex .*m.*