我有一个用于c#项目的FileSystemWatcher对象,以及在事件发生时匹配的多个模式。
作为项目要求,我无法创建多个FileSystemObjects并使用单独的过滤器方法来匹配我的模式。因此必须将一个过滤器设置为*.*
监视所有文件,并且在创建事件时,我必须应用正则表达式来处理循环中每个模式的匹配文件。我的模式将包含*
个字符,与我们将其传递给Filter方法的方式相同。
如何使用单个Regex语句复制内置过滤器功能?
许多FileSystemWatcher过滤方案中的一些;
pi*.txt
(这些应匹配:piano.txt,pie.txt)*.doc
(任何包含。 doc 扩展名的内容都应该匹配)04*2013.txt
(任何文本文件,应该是四月份的任何一天)pi*ar*.jpg
(前缀为 pi ,在文件名中的任意位置前缀后包含 ar ,且必须为 jpg 扩展名)pre*ar*pre
(任何带有前前缀的文件,后跟 ar ,后跟另一个前)*.*
(一切都被接受)答案 0 :(得分:2)
很少有时间我为我的作品写了类似的东西
public static string WildcardPatternToRegexPattern(string pattern)
{
return string.Format("^{0}$", Regex.Escape(pattern.Replace('/', Path.DirectorySeparatorChar)).Replace(@"\*", ".*").Replace(@"\?", "."));
}
答案 1 :(得分:0)
如果您希望学习正则表达式语句,可以先查看http://txt2re.com/。如果您粘贴一段文本,则会有一个点击界面来为您生成正则表达式。我还建议只使用谷歌搜索“preg”。