正则表达式中*。*和*之间有什么区别?

时间:2015-10-29 07:35:54

标签: c windows winapi

我想更具体地了解一下,winapi *.*的搜索模式中*FindFirstFile之间的区别是什么?

GetWindowsDirectoryA( buffer2, sizeof(buffer2) );
strcat(buffer2, "\\*"); 
handle = FindFirstFileA(buffer2, &data);

1 个答案:

答案 0 :(得分:5)

这些不是正则表达式。它们是基于通配符的简单搜索模式。

**.*之间实际上没有区别。这些通配符模式的规则可以追溯到DOS。 Raymond Chen在此解释了DOS规则:How did wildcards work in MS-DOS?因为*.*与DOS中的*相同,所以为了兼容性,在Win32中保留了这种等价。

  

但FCB匹配算法的一些怪癖仍然存在于Win32中,因为它们已成为惯用语。

     

例如,如果您的模式以.*结尾,则忽略.*。如果没有这个规则,模式*.*将仅匹配包含点的文件,这可能会破坏地球上所有批处理文件的90%,以及每个人的肌肉记忆,因为每个运行Windows NT 3.1的人都长大了在*.*表示所有文件的世界中。