在C#中有没有简单的选项来进行MSDOS样式模式匹配?
我对RegEx很满意;但是,我需要msdos样式模式匹配。
预期样本:
foo???.txt
*.bat
我认为@ zmbq的答案是有道理的。我想确保我没有遗漏.NET中的任何内置功能。我想我必须创建一个扩展方法Dos2RegExPattern,它将msdos模式转换为regex并在我的应用程序中使用它。
答案 0 :(得分:4)
您可以将MS-DOS模式转换为标准正则表达式格式。将?
更改为.
,将*
更改为.*
,并且不要忘记转义其他字符(.
变为\.
)。
因此,例如,*.bat
变为.*\.bat
,file???.dat
变为file...\.dat
。
编辑:
正如@hvd在评论中指出的那样,MS-DOS中的?
匹配一个或没有字符,具体取决于其位置(file???.dat
匹配{{1}之后最多三个字符的所有文件},但file
与f?ile.dat
不匹配。我怀疑你的任何用户会注意到......
答案 1 :(得分:-1)