title | author | date | CreateTime | categories |
---|---|---|---|---|
C# 通配符转正则 |
lindexi |
2018-2-13 17:23:3 +0800 |
2018-2-13 17:23:3 +0800 |
C# |
可以使用下面代码把通配符转正则字符串
public static class WildcardRegexString
{
/// <summary>
/// 通配符转正则
/// </summary>
/// <param name="wildcardStr"></param>
/// <returns></returns>
public static string GetWildcardRegexString(string wildcardStr)
{
Regex replace = new Regex("[.$^{\[(|)*+?\\]");
return replace.Replace(wildcardStr,
delegate (Match m)
{
switch (m.Value)
{
case "?":
return ".?";
case "*":
return ".*";
default:
return "\" + m.Value;
}
}) + "$";
}
}
文件经常是不需要区分大小写,所以需要写一个函数告诉用户,不需要区分大小写。
/// <summary>
/// 获取通配符的正则
/// </summary>
/// <param name="wildcarStr"></param>
/// <param name="ignoreCase">是否忽略大小写</param>
/// <returns></returns>
public static Regex GetWildcardRegex(string wildcarStr, bool ignoreCase)
{
if (ignoreCase)
{
return new Regex(GetWildcardRegexString(wildcarStr));
}
return new Regex(GetWildcardRegexString(wildcarStr), RegexOptions.IgnoreCase);
}
正则可以使用程序集方式,启动慢,但是运行快
private static Regex _regex = new Regex("[.$^{\[(|)*+?\\]", RegexOptions.Compiled);
我的软件就需要重复使用,于是就使用这个。
代码:
<script src="https://gist.github.com/lindexi/2bd3bccb6de194aa40ad2e09a5413000.js"></script>https://gist.github.com/lindexi/2bd3bccb6de194aa40ad2e09a5413000