c# - 寻找简单而强大的 windows 通配符 (`*, ?` ) 匹配实现

标签 c# .net regex wildcard

我正在寻找简单而强大的方法来实现 Windows 风格的 *? 字符串中的通配符匹配。

BeginsWith()EndsWith() 过于简单,无法涵盖所有​​情况,而将通配符表达式转换为正则表达式看起来会很复杂,我不确定性能。

需要一个快乐的媒介。

编辑:我正在尝试解析 .gitignore 文件并匹配相同的文件,就像 Git 所做的那样。这意味着:

  • 文件应该不在存储库的索引中(所以我正在根据索引中存储的路径检查文件的路径)
  • .gitignore 中的模式数量可以很大;
  • 要检查的文件数量也可能很大。

最佳答案

Windows 通配符 ?* 在正则表达式中的等价物只是 ..*.


[编辑] 鉴于您的新编辑(说明您正在寻找实际文件),我将完全跳过翻译并让 .Net 使用Directory.GetFiles() .

(请注意,出于某种原因,将 ? 传递到 Directory.GetFiles() 匹配“零个或一个字符”,< em>而在 Windows 中它总是恰好匹配一个字符)

关于c# - 寻找简单而强大的 windows 通配符 (`*, ?` ) 匹配实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8842491/

相关文章:

excel - 正则表达式从 Outlook 电子邮件正文中提取金额

c# - 尝试在 azure 上创建弹性池时出现异常

.net - 如何让 gif 动画在 WPF 中工作?

c# - 为什么第一次播放 SoundEffectInstance 需要更多时间?

.net - 最佳字符串容器:StringCollection,Collection <字符串>,列表<字符串>,ArrayList,..?

r - 根据获取前一行的 if 条件将列分成两部分

regex - 包含字母数字,但不匹配特定单词

c# - Moq C#,我怎样才能模拟这个类?

c# - 流利的 NHibernate : How to map an entire class as ReadOnly?

c# - 如何在 XAML 中的菜单项旁边显示键盘快捷键