Regex 仅允许文本和多个0';编号前的s,而不是[1-9]

Regex 仅允许文本和多个0';编号前的s,而不是[1-9],regex,excel,vba,Regex,Excel,Vba,我正在尝试将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\director

我正在尝试将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\..*$

示例如下:

说明:

  • ^.[\\/]
    -将所有内容匹配到最后一个斜杠
    • [\\/]
      -匹配单个反斜杠或单个正斜杠;请注意,两个斜杠都使用反斜杠转义
  • [^0-9]*0*1\..*$
    -匹配所有不超过并包括任何前导“0”的非数字,后跟文档号,然后是文件扩展名
    • [^0-9]*
      -匹配可选“0”之前的任何非数字;防止类似“101”的情况发生
    • 0*1
      -文档编号前的可选“0”(本例中为1)
    • \..*$
      -匹配一个文本
      ,然后匹配任何字符,直到行尾;应该处理文件扩展名

0*
后面的
1
是您在问题中提到的文档编号。

您的目标有点不清楚,但请看这里:(这也将作为一个组返回数字)。您希望匹配路径和文件名还是仅匹配文件名?请尝试
“(?:^\D)0*”&DocNumber&“\.[^.]*$”
。非常感谢John!回答得很好,也没那么复杂。现在,我只需要允许文件编号是可变的,我的问题应该得到100%的解决。抱歉耽搁了,我在南非,所以有点时差。@R.Swanepoel
Pattern=“^.*[\\/][^0-9]*0*”&DocNumber&“\..*$”
应该可以。