【发布时间】:2020-05-07 22:42:09
【问题描述】:
我们正在使用一些文件名结构,用户必须如何保存文件。
我有一个庞大的 Excel 文件列表,我必须对文件名进行一些检查。
简而言之,文件名以部件号开头。部件号包含“组”,用连字符分隔。
主要问题是用户有时会(随机)使用带连字符的空格来分隔组。
我必须像这样在列表中标记文件名: -正确的 -相似但错误 - 不匹配
相似的意思是如果组的顺序是对的,但是组的分隔不只是一个连字符(-),而是结合一个空格:' - ' or '- ' or ' -' or @987654324 @等。
我在 VBA 中编写了一个正则表达式宏。这很好用,但我坚持使用“相似”模式。
以下是正则表达式中一种结构的简化版本:
^(\d{4}-\d{2}(?:-\d{3})?-[A-Z]\d{3}-[A-Z])(?: - )(.*)
在这种情况下,有趣的部分是第一个捕获组,即部分编号。 如您所见,在第一个捕获组中有一个非捕获组,这是可选的。 两个捕获组(部件号和描述)用' - '分隔。
正确文件名的示例:
1111-22-333-A444-B - DESCR.EXT
1111-22-A444-B - DESCR.EXT
类似但错误的文件名的示例:
1111-22 -333-A444-B - DESCR.EXT
1111-22- A444-B - DESCR.EXT
1111 -22-333-A444-B - DESCR.EXT
1111 -22 - A444- B - DESCR.EXT
1111 - 22 - A444 - B - DESCR.EXT
不匹配文件名的示例:
1111-22-333-A444 - DESCR.EXT
1111-22-B - DESCR.EXT
1111-22-333-A444-BDESCR.EXT
1111-22 - DESCR.EXT
1111-22-33-444-B - DESCR.EXT
1111-22-444-B - DESCR.EXT
我可以用上面的模式标记正确和不匹配的值,但我不知道如何修改以检查什么是“相似”? 我试图在这里和谷歌搜索解决方案,但没有找到:/
谢谢
【问题讨论】:
-
在将空格交给正则表达式之前去掉空格?
标签: regex capturing-group