在Lua中,需要通过正则表达式基于反斜杠来分隔字符串。

我有一个字符串如下所示: file:c:\test\xyz.exe 如何在Lua中通过正则表达式将上述字符串分为3部分?

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

原文链接 https://stackoverflow.com/questions/5193407

点赞
stackoverflow用户633281
stackoverflow用户633281

请查阅 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"。

2011-03-04 12:01:35