作为较大代码的一部分,我试图拆分文件名字符串,以便可以使用基数在一组文件夹中搜索文件。
典型的文件名是:
TEST-999-TY-MOD-DOC-000999-SOME RANDOM FILE NAME.xls
TEST-999-TY-MOD-DOC-000998_SOME RANDOM FILE NAME.xls
TEST-999-TY-MOD-DOC-000997 SOME RANDOM FILE NAME.xls
TEST-999-TYP-MOD-DOC-000999-SOME RANDOM FILE NAME.xls
TEST-999-TYP-MOD-DOC-000998_SOME RANDOM FILE NAME.xls
TEST-999-TYP-MOD-DOC-000997 SOME RANDOM FILE NAME.xls
这些文件名中唯一不变的是第六部分的6位格式 有没有一种方法可以在所有这些文件名上使用split函数,使其仅具有基础名称
TEST-999-TY-MOD-DOC-000999
如果它们的长度都相同,那么我可以使用left函数,但是因为它改变了,而且它们与我在奋斗的文件名中使用的内容不一致。
欢呼
答案 0 :(得分:3)
我们可以尝试使用以下模式进行正则表达式替换:
^(.*-\d{6}).*$
然后,我们可以替换为第一个(也是唯一一个)捕获组,从而删除结尾的文件名。
Dim RE As Object
Set RE = CreateObject("VBScript.RegExp")
RE.ignoreCase = True
RE.Global = True
RE.Pattern = "^(.*-\d{6}).*$"
Debug.Print RE.Replace("TEST-999-TY-MOD-DOC-000999-SOME RANDOM FILE NAME.xls", "$1")
这是一个演示正则表达式工作正常的演示:
答案 1 :(得分:0)
如果基本名称末尾的数字序列始终以0
开头并且包含6个字符(数字),则可以使用:
=IF(A1="","",LEFT(A1,FIND("0",A1)+5))