【问题标题】:regex split filename vba正则表达式拆分文件名vba
【发布时间】:2018-10-31 13:28:29
【问题描述】:

我有几个文件有两种类型的文件名

  1. “c:\path\filename [一些文本].pdf”或
  2. "c:\path\filename.pdf"

我想按如下方式拆分文件:

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

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

^(.*\\)(.*)s*?(\[.*\]).*?([a-z]*)$

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

【问题讨论】:

    标签: regex vba


    【解决方案1】:

    你可以使用

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

    regex demo

    详情

    • ^ - 字符串开头
    • (.*\\) - 第 1 组:除换行符之外的任何 0+ 字符,尽可能多
    • (.*?) - 第 2 组:除换行符之外的任何 0+ 字符,尽可能少
    • (?:\s*(\[.*\]))? - 匹配的可选组
      • \s* - 0+ 个空格
      • (\[.*\]) - 第 3 组:[,除换行符之外的任何 0+ 字符,尽可能多和 ]
    • \. - 一个.
    • ([a-zA-Z]*) - 第 4 组:0+ 个字母(或者,仅使用 [^.]* 匹配除 . 之外的任何字符)
    • $ - 字符串结束。

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-05
      相关资源
      最近更新 更多