没有前两位数的unixpath的正则表达式文件名

时间:2013-11-18 15:53:52

标签: regex path filenames

我在一个以两位数开头的unix路径中有文件名...如何在没有扩展名的情况下提取名称

/this/is/my/path/to/the/file/01filename.ext应为filename

我目前有[^/]+(?=\.ext$)所以我得01filename,但如何摆脱前两位?

4 个答案:

答案 0 :(得分:0)

您可以在已有的前面添加一个后视,寻找两位数字:

(?<=\d\d)[^/]+(?=.ext$)

仅当您有两位数字时才有效!不幸的是,在大多数正则表达式引擎中,不可能在外观中使用*+等量词。

  • (?<=\d\d) - 在比赛前检查两位数字
  • [^/]+ - 匹配1个或多个字符,/
  • 除外
  • (?=.ext$) - 检查匹配后的.ext

答案 1 :(得分:0)

试试这个:

/\d\d(.*?).\w{3}$

说明:

/\d\d:斜线后跟两位数

(.*?):捕获

.\w{3}:一个点后跟三个字母

$:字符串结尾

它适用于Expresso

答案 2 :(得分:0)

更一般的正则表达式:

(?:^|\/)[\d]+([^.]+)\.[\w.]+$

说明:

  (?:                      group, but do not capture:
    ^                        the beginning of the string
   |                        OR
    \/                       '/'
  )                        end of grouping
  [\d]+                    any character of: digits (0-9) (1 or more
                           times (matching the most amount possible))
  (                        group and capture to \1:
    [^.]+                    any character except: '.' (1 or more
                             times (matching the most amount
                             possible))
  )                        end of \1
  \.                       '.'
  [\w\.]+                  any character of: word characters (a-z, A-
                           Z, 0-9, _), '.' (1 or more times
                           (matching the most amount possible))
  $                        before an optional \n, and the end of the
                           string

答案 3 :(得分:0)

考虑以下Regex ......

(?<=\d{2})[^/]+(?=.ext$)

祝你好运!