我正在尝试将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 :(得分:6)
尝试类似这样的操作:^.*[\\\/][^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*
是您在问题中提到的文件编号。