【问题标题】:Regex to match single character filenames with an extension正则表达式匹配带有扩展名的单字符文件名
【发布时间】:2017-12-29 14:57:17
【问题描述】:

我需要找到任何包含单个字符文件名且扩展名为 1-3 个字符的文件。

我花了一些时间寻找如何做到这一点,但无法找到正确的正则表达式组合。我正在使用一个需要 boost regex 的解决方案,我认为它类似于 perl regex。

这里有一些应该匹配的例子:

1.exe
a.c
-.zip  (a hyphen is ok for the first part of the filename)

这些示例不应匹配:

1 (doesn't have an extension)
1a.exe (has 2+ chars before the period)

我试过的例子:

^[.]+\.[a-z0-9]{1,3}$
^[a-z0-9]+\.[a-z0-9]{1,3}$
^[\w]\.[\w]{1,3}$
^([0-9a-z]{1})\..{1,3}

感谢您提供的任何帮助!

【问题讨论】:

    标签: regex boost filenames


    【解决方案1】:

    你可以这样做:

    ^[\w\-]\.\w{1,3}$

    说明

    • 从字符串^的开头
    • 匹配单词字符或连字符^[\w\-]
    • 匹配一个点\.
    • 匹配一个单词字符 1 到 3 次
    • 字符串结尾$

    或更多限制而不是\w

    ^[a-zA-Z\d\-]\.[a-zA-Z]{1,3}$

    【讨论】:

    • 我觉得越受限制的其实就是好的。 \w 匹配任何等于 [a-zA-Z0-9_] 的单词字符,因此允许在文件名和/或扩展名中使用下划线。
    猜你喜欢
    • 1970-01-01
    • 2019-07-30
    • 2012-02-18
    • 2012-06-05
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    相关资源
    最近更新 更多