regex - 数字前只允许文本和多个 0,不允许 [1-9]
问题描述
我正在尝试将 excel 文件中的文档编号与文件夹中的文件匹配。
示例文件目录:
A) "C:\Users\directory\Supplier\Invoice1.pdf"
B) "C:\Users\directory\Supplier\Invoice001.pdf"
C) "C:\Users\directory\Supplier\Invoice101.pdf"
D) "C:\Users\directory\Supplier\Invoice10.pdf"
E) "C:\Users\directory\Supplier\Invoice21.pdf"
我的正则表达式模式匹配 A、B 和 C,但应该只匹配 A 和 B。
Pattern = "(^|[^1-9])(DocNumber)([^0-9]|$)"
, 在我的示例中 DocNumber = 1 (也可以是任何其他数字)。
关于如何改进我的公式以不匹配 C 的任何想法?
注意:我看到与此类似的其他线程不受欢迎,因此我试图澄清我的问题,因为其他线程没有为我提供解决方案。
解决方案
尝试这样的事情:^.*[\\\/][^0-9]*0*1\..*$
此处看到的示例:https ://regex101.com/r/O7RdEq/4
解释:
^.*[\\\/]
- 将所有内容匹配到最后一个斜线[\\\/]
- 匹配单个反斜杠或单个正斜杠;请注意,两个斜杠都使用反斜杠进行转义。
[^0-9]*0*1\..*$
- 匹配每个非数字直到并包括任何前导“0”,然后是您的文档编号,然后是文件扩展名[^0-9]*
- 匹配可选“0”之前的任何非数字;防止像“101”这样的情况0*1
- 文件编号前的可选“0”(在这种情况下为 1)\..*$
- 匹配文字.
,然后匹配任何字符,直到行尾;应该处理文件扩展名。
1
之后0*
是您在问题中提到的文件编号。
推荐阅读
- hibernate - JOINED 继承策略中没有鉴别器列
- amazon-cloudformation - 使用 cloudformation 创建 ssm 安全字符串
- node.js - 谷歌云无法连接到mongodb集群
- java - 如何在while循环中重复if语句
- javascript - 如何将表单中的用户输入分配给输出文件
- matlab - 在 matlab/mathematica 中以数值方式评估不定积分,它不能以符号方式进行
- node.js - 重定向 nodejs express 应用程序中 npm 模块“请求”发出的异步调用
- php - 通过 AJAX 传递 PHP 数据时出错?
- vim - VIM:撤消功能后恢复位置
- jenkins - 在 Jenkinsfile 中参数化 withCredentials 块