gpt4 book ai didi

lua - 意外的 lua 模式匹配结果

转载 作者:行者123 更新时间:2023-12-04 23:17:39 24 4
gpt4 key购买 nike

对于以下代码:

local function getParentPath(_path)

pattern = "(.+)([/\\][/\\])(.+)"
i,j,k = string.match(path,pattern)
return i,j,k

end

print(getParentPath(path))

对于 path = "C://data//file.text",我得到:
C://data // file.text

但是对于 path = "C:\data\file.text",我得到:
nil nil nil

我正在寻找一种对两者都适用的模式。有什么建议?

最佳答案

问题是第一个.+贪婪地匹配并抓取到最后一个 \然后回溯。然后,一个 \可搭配[\\/] ,因此第一组有一个反斜杠,第二组有第二个。

您可以通过使用来修复它

pattern = "^(.-)([/\\]+)([^/\\]+)$"

IDEONE demo

解释:
  • ^ - 字符串开头
  • (.-) - 任何字符,但尽可能少(与 - 量词惰性匹配)
  • ([/\\]+) - 1+ /\
  • ([^/\\]+) - 除 / 之外的 1+ 个字符和 \
  • $ - 字符串结尾
  • 关于lua - 意外的 lua 模式匹配结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36204988/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com