Regex 仅允许文本和多个0';编号前的s,而不是[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和BRegex 仅允许文本和多个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
Pattern=“(^[1-9])(DocNumber)([^0-9]|$)”
,
其中,在我的示例中,DocNumber=1(也可以是任何其他数字)
关于如何改进我的公式使之与C不匹配,有什么想法吗
注意:我发现其他类似的线程不受欢迎,因此我试图澄清我的问题,因为其他线程没有为我提供解决方案。尝试类似的方法:
^.[\\/][^0-9]*0*1\..*$
示例如下:
说明:
-将所有内容匹配到最后一个斜杠^.[\\/]
-匹配单个反斜杠或单个正斜杠;请注意,两个斜杠都使用反斜杠转义[\\/]
-匹配所有不超过并包括任何前导“0”的非数字,后跟文档号,然后是文件扩展名[^0-9]*0*1\..*$
-匹配可选“0”之前的任何非数字;防止类似“101”的情况发生[^0-9]*
-文档编号前的可选“0”(本例中为1)0*1
-匹配一个文本\..*$
,然后匹配任何字符,直到行尾;应该处理文件扩展名
0*
后面的1
是您在问题中提到的文档编号。您的目标有点不清楚,但请看这里:(这也将作为一个组返回数字)。您希望匹配路径和文件名还是仅匹配文件名?请尝试“(?:^\D)0*”&DocNumber&“\.[^.]*$”
。非常感谢John!回答得很好,也没那么复杂。现在,我只需要允许文件编号是可变的,我的问题应该得到100%的解决。抱歉耽搁了,我在南非,所以有点时差。@R.SwanepoelPattern=“^.*[\\/][^0-9]*0*”&DocNumber&“\..*$”
应该可以。