我正在寻找简单而强大的方法来实现 Windows 风格的 *
和 ?
字符串中的通配符匹配。
BeginsWith()
、EndsWith()
过于简单,无法涵盖所有情况,而将通配符表达式转换为正则表达式看起来会很复杂,我不确定性能。
需要一个快乐的媒介。
编辑:我正在尝试解析 .gitignore
文件并匹配相同的文件,就像 Git 所做的那样。这意味着:
- 文件应该不在存储库的索引中(所以我正在根据索引中存储的路径检查文件的路径)
.gitignore
中的模式数量可以很大;- 要检查的文件数量也可能很大。
最佳答案
Windows 通配符 ?
和 *
在正则表达式中的等价物只是 .
和 .*
.
[编辑] 鉴于您的新编辑(说明您正在寻找实际文件),我将完全跳过翻译并让 .Net 使用Directory.GetFiles()
.
(请注意,出于某种原因,将 ?
传递到 Directory.GetFiles()
匹配“零个或一个字符”,< em>而在 Windows 中它总是恰好匹配一个字符)
关于c# - 寻找简单而强大的 windows 通配符 (`*, ?` ) 匹配实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8842491/