如何实现MSDOS样式模式匹配(通配符)?

时间:2014-01-06 22:15:14

标签: c#

在C#中有没有简单的选项来进行MSDOS样式模式匹配?

我对RegEx很满意;但是,我需要msdos样式模式匹配。

预期样本:

foo???.txt
*.bat

我认为@ zmbq的答案是有道理的。我想确保我没有遗漏.NET中的任何内置功能。我想我必须创建一个扩展方法Dos2RegExPattern,它将msdos模式转换为regex并在我的应用程序中使用它。

2 个答案:

答案 0 :(得分:4)

您可以将MS-DOS模式转换为标准正则表达式格式。将?更改为.,将*更改为.*,并且不要忘记转义其他字符(.变为\.)。

因此,例如,*.bat变为.*\.batfile???.dat变为file...\.dat

编辑:

正如@hvd在评论中指出的那样,MS-DOS中的?匹配一个或没有字符,具体取决于其位置(file???.dat匹配{{1}之后最多三个字符的所有文件},但filef?ile.dat不匹配。我怀疑你的任何用户会注意到......

答案 1 :(得分:-1)

在.Net中,不会: -

Directory.GetFiles (path, pattern)

完全符合OP的要求(参见this page)?