【发布时间】:2012-02-09 04:18:32
【问题描述】:
我正在寻找一种简单而强大的方法来实现 Windows 风格的 * 和 ? 通配符匹配字符串。
BeginsWith()、EndsWith() 过于简单,无法涵盖所有情况,而将通配符表达式转换为正则表达式会看起来很复杂,我不确定性能。
需要一个快乐的媒介。
编辑: 我正在尝试解析 .gitignore 文件并匹配相同的文件,就像 Git 所做的那样。这意味着:
- 文件应该不在存储库的索引中(所以我正在对照存储在索引中的路径检查文件的路径)
-
.gitignore中的模式数量可能很大; - 要检查的文件数量也可能很大。
【问题讨论】:
-
非常模糊。发布一些具有所需输出的输入。
-
@Henk,大多数 Windows 用户都知道是什么意思,* 任意数量的字符,?只是 1 个未知字符... ?blah*.txt 将匹配任何内容与 blah 之前的字符、blah 之后的任意数量的字符并以 .txt 结尾
-
@HenkHolterman,我正在解析
.gitignore文件,在我的库中,我需要实现与原始 Git 提供的相同的行为。 -
@seldon,谢谢!它非常接近我实际搜索的内容!