对于以下代码:
local function getParentPath(_path)
pattern = "(.+)([/\\][/\\])(.+)"
i,j,k = string.match(path,pattern)
return i,j,k
end
print(getParentPath(path))
Run Code Online (Sandbox Code Playgroud)
对于path ="C://data//file.text",我得到:
C://data // file.text
Run Code Online (Sandbox Code Playgroud)
但是对于path ="C:\ data\file.text",我得到:
nil nil nil
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种适合两者的模式.有什么建议?
问题是,第一.+场比赛贪婪地抓住所有比赛直到最后\,然后回溯.然后,\可以匹配一个[\\/],因此第一组有一个反斜杠,第二组有第二个反斜杠.
您可以使用它来修复它
pattern = "^(.-)([/\\]+)([^/\\]+)$"
Run Code Online (Sandbox Code Playgroud)
请参阅IDEONE演示
说明:
^ - 字符串的开头(.-)- 任何字符,但尽可能少(与-量词的懒惰匹配)([/\\]+)- 1+ /或\([^/\\]+)- 除了/和之外的1个以上的字符\$ - 字符串结尾| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |