Lua string.gsub模式之间的文本

chr*_*ler 5 string lua lua-patterns

我如何在Lua中提取模式之间的文本.例如

s="this is a test string. <!2014-05-03 23:12:08!> something more"
Run Code Online (Sandbox Code Playgroud)
  1. 我只需要结果日期/时间: 2014-05-03 23:12:08
    print(string.gsub(s, "%<!.-%!>"))不起作用
  2. 我需要所有文本没有日期/时间,如: "this is a test string. something more"

Yu *_*Hao 7

该模式"<!.-!>"有效,但您需要使用它string.match来获取日期/时间部分:

 print(string.match(s, "<!(.-)!>"))
Run Code Online (Sandbox Code Playgroud)

请注意,您不需要转义!<以模式.当然逃避它们并不是一个错误.

要获取没有日期/时间部分的字符串,请将其替换为空字符串:

local result = string.gsub(s, "<!.-!>", "")
print(result)
Run Code Online (Sandbox Code Playgroud)

您还可以扩展模式.-以更多地验证日期/时间的格式:

result = string.gsub(s, "<!%d%d%d%d%-%d%d%-%d%d%s+%d%d:%d%d:%d%d!>", "")
Run Code Online (Sandbox Code Playgroud)