正则表达式拆分文件名vba

时间:2018-10-31 13:28:29

标签: regex vba

我有几个具有两种文件名的文件

  1. “ c:\ path \ filename [some text] .pdf”或
  2. “ c:\ path \ filename.pdf”

我想按以下方式分割文件:

  • 第1组:c:\ path \
  • 第2组:文件名
  • 组3:[123](或为空)
  • 第4组:pdf

此正则表达式模式适用于文件类型2(不带方括号),但不适用于文件类型1。

event.target

为什么它不适用于文件类型2?我可以使用哪种模式来匹配两种文件名类型?

1 个答案:

答案 0 :(得分:1)

您可以使用

^(.*\\)(.*?)(?:\s*(\[.*\]))?\.([a-zA-Z]*)$
            ^^^           ^^ 

请参见regex demo

详细信息

  • ^-字符串的开头
  • (.*\\)-组1:尽可能多的除换行符以外的0+个字符
  • (.*?)-第2组:除换行符以外的任何0+个字符,并且尽可能少
  • (?:\s*(\[.*\]))?-匹配的可选组
    • \s*-超过0个空格
    • (\[.*\])-第3组:一个[,除换行符之外的任何0+个字符,并尽可能多地包含一个]
  • \.-一个.
  • ([a-zA-Z]*)-第4组:0个以上的字母(或者只需使用[^.]*来匹配.以外的任何字符)
  • $-字符串的结尾。