【问题标题】:Extracting filename only with pattern matching仅使用模式匹配提取文件名
【发布时间】:2013-09-19 00:14:00
【问题描述】:

是否可以使用string.match 并返回捕获,直到最后一个. 字符停止在扩展部分?

【问题讨论】:

    标签: string lua pattern-matching lua-patterns


    【解决方案1】:
    local str = "filename.lua.txt"
    local cap = str:match("(.+)%..+")
    print(cap)
    

    输出:filename.lua

    这个模式的关键是+的贪婪,并使用%.来表示字面量.

    【讨论】:

    • 使用+ 代替* 不是更正确吗,因为这两个部分都不能为空?
    • @user2779657 听起来不错。我没有使用+,因为我不确定这两个部分在所有操作系统中都不能为空。
    • 任何当前操作系统上,任何一个部分都可以为空。所有系统都允许使用 .foobar 等文件名。
    • @dualed 至少 WindowsXP 不允许像.foo这样的文件名
    • 确实如此。您只是无法通过资源管理器创建它,当您拥有一个已经具有这样名称的文件时,它会添加许多有趣的事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    相关资源
    最近更新 更多