c# - 如何搜索通配符
问题描述
我正在尝试获取具有特定模式的文件夹文件名。
我写了这个:
string[] allfiles = Directory.GetFiles(x, "??-?-??????????.pdf", SearchOption.AllDirectories);
但这也有效:
string[] allfiles = Directory.GetFiles(x, "??-?-???.pdf", SearchOption.AllDirectories);
结果是一样的:
C:\Users\source\repos\LettersUploader\myFiles\10-9-110000000.pdf
C:\Users\source\repos\LettersUploader\myFiles\11-8-120000000.pdf
C:\Users\source\repos\LettersUploader\myFiles\12-7-130000000.pdf
我希望这只是数字,并且在这种模式下是“11-1-111111111.pdf”,所以如果有文件看起来像这样“11-1-1111.pdf”或“xx-g-atpfgtnjk.pdf”他们将不包括在内。
解决方案
同意吉米;对于复杂的模式匹配,最好获取所有 pdf,然后使用正则表达式在 c# 中过滤你不想要的
var r = new Regex(@"[/\\]\d{2}-\d-\d{9}\.pdf$", RegexOptions.Compiled);
foreach(var f in Directory.GetFiles(x, "*.pdf").Where(r.IsMatch))
...
该正则表达式的意思是“正斜杠或反斜杠,然后是 2 位数字,然后是连字符,然后是数字,然后是连字符,然后是 9 位数字,然后是点 pdf,然后是字符串结尾”
推荐阅读
- javascript - ruby on rails 中的 jquery.raty 星号
- amazon-ec2 - 缺少具有多个 EC2 实例的 Drupal 7 + AWS aws 负载均衡器 + 临时文件夹文件
- javascript - 得到错误 .split("").reverse() 不是函数
- sequelize.js - Sequelizejs:未处理的拒绝 SequelizeDatabaseError:列 user.playerstatsId 不存在
- python - 查看以 Django 中其他列为条件的新列
- javascript - 如何知道两个透明图像是否在非透明区域相交
- python - Python - 使用 Knn 算法扩展测试数据的 Ocr
- javascript - React/JS 切换表列
- firebase - 履行 URL 在 Dialogflow 中无效 | 使用云函数
- python - unindent 不匹配任何外部缩进级别 python3.6.4