我有一个C#应用程序,该应用程序需要识别给定的字符串是否是有效的Windows文件路径,该路径以带有扩展名的文件名结尾。目前我有:
public static bool IsValidWindowsFilePathWithFileName(string filepath)
{
string scriptFilePathPattern = @"^[A-Za-z]:(\\\w+(\s*\w+)*)*(\\\w+(\s*\w+)*\.[a-zA-Z]\w*)$";
return Regex.IsMatch(filepath, scriptFilePathPattern);
}
通常正常。但是,如果我输入的内容以长字符串结尾,例如
“ C:\ Windows \ System32 \ ThisIsALongBadFileName”
需要几分钟的时间来处理。有更好的方法吗?
答案 0 :(得分:1)
请尽可能删除*
(零个或多个),并替换为+
1个或多个。使用的每个*
都会增加解析器的回溯。如果您知道不存在零条件,请不要将其放入...中,使用+
。
答案 1 :(得分:1)
我决定只接受不以斜杠结尾的任何文件路径都是有效的,而不是尝试管理合法的文件名。