【问题标题】:Lua Pattern - How get the required string using this lua patternLua Pattern - 如何使用这个 lua 模式获取所需的字符串
【发布时间】:2012-06-28 19:21:24
【问题描述】:
local invoiceData =
[[I N V O I C E
Invoice No. :
ABCDEFG125469857
Invoice Date May
2012
]]

我使用的模式是

 print (string.match(invoiceData,'\nInvoice Date (.-)\n'))

我想获取字符串 发票日期 作为 MAY12。或0512..请帮忙

谢谢

【问题讨论】:

    标签: lua


    【解决方案1】:

    不要匹配.-,而是更具体地使用%w+(字母数字)和%d+(数字)来匹配月份和年份。

    脚本:

    local invoiceData =
    [[I N V O I C E
    Invoice No. :
    ABCDEFG125469857
    Invoice Date May
    2012
    ]]
    
    month, year = string.match(invoiceData,'Invoice%s+Date%s+(%w+)%s+%d*(%d%d)')
    print(month, year)
    

    将打印:

    5 月 12 日

    【讨论】:

    • OP 不想要世纪。所以这在最后一部分使用%d%d(%d%d)。 OTOH,以防万一,您的模式更加健壮。
    • @lhf,说得好。我将模式从(%d+) 调整为%d*(%d%d),这将匹配输入"... 2012""... 12" 作为"12"
    猜你喜欢
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2015-12-17
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多