在Lua中需要通过Regex基于反斜杠来分隔字符串

时间:2011-03-04 11:57:13

标签: lua

我有一个类似的字符串 file:c:\test\xyz.exe 如何通过Lua中的Regex将上述字符串分成3个部分?

例如,第一部分是file:, 字符串的第二部分应为c:\test 字符串的第三部分应为yz.exe

1 个答案:

答案 0 :(得分:2)

查看Lua手册的字符串操作部分:http://www.lua.org/manual/5.1/manual.html#5.4

特别是match()和gmatch()。例如:

 s = "file:c:\\test\\xyz.exe"
 for first, second, third in string.gmatch(s, "(%a+):(.+)\\([%a%p]+)") do
   print(first)
   print(second)
   print(third)
 end

要在第一个和第三个位置允许使用字母数字字符,请将%a替换为%w。所有其他可能的模式在链接手册章节的末尾引用。

您必须将输入字符串中的每个'\'加倍,否则模式匹配将不起作用。反斜杠是Lua中的一个转义符,所以如果你想在你的字符串中有一个,你必须逃避它:"\\"

给定代码适用于“file:c:\ test \ xyz.exe”和“file:C:\ test \ test3 \ a \ abc.exe”