You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写可识别转义字符的Lua模式以提取路径分段?

解决Lua模式匹配带转义斜杠的路径问题

要处理包含转义斜杠\/的路径字符串(如/<\/>/b/c),同时支持各段可选,你需要修改模式,让它能区分未转义的/(作为分隔符)和转义的\/(作为普通字符)。

最终模式

local pattern = "^%/((\\/|[^/])*)%/((\\/|[^/])*)%/((\\/|[^/])*)$"

模式逻辑拆解

  • ^%/:匹配字符串开头的分隔符/
  • ((\\/|[^/])*):每个捕获组的核心规则,匹配零个或多个字符,仅允许两种情况:
    • \\/:转义后的斜杠(Lua字符串中需用\\转义\,因此模式里写为\\/)
    • [^/]:非斜杠的普通字符
  • %/:匹配作为分隔符的未转义/
  • $:匹配字符串结尾

测试示例

对于目标输入"/<\\/>/b/c"(注意Lua字符串中\需转义为\\),用string.match测试:

local input = "/<\\/>/b/c"
local a, b, c = string.match(input, pattern)
print(a) -- 输出: <\/>
print(b) -- 输出: b
print(c) -- 输出: c

对于空段输入"///",三个捕获组都会返回空字符串,符合可选要求。

原模式失效原因

你之前使用的^%/(.-)%/(.-)%/(.-)$中,.-是懒惰匹配,会在遇到第一个/时停止匹配,但它无法区分转义的\/和分隔用的/,因此会错误地把<\/>中的/当作分隔符,导致拆分结果不符合预期。

内容的提问来源于stack exchange,提问作者Peter R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 02:17:59