引用文本的正确Lua模式是什么?

Wol*_*sen 5 lua escaping lua-patterns

我已经玩了一个小时或两个小时,并发现自己在Lua模式匹配实用程序的路障.我试图匹配字符串中的所有引用文本,并在需要时替换它.

到目前为止我提出的模式是:(\?[\"\'])(.-)%1

这在某些情况下有效,但并非所有情况:

Working: "This \"is a\" string of \"text to\" test with"

Not Working: "T\\\"his \"is\' a\" string\" of\' text\" to \"test\" wit\\\"h"
Run Code Online (Sandbox Code Playgroud)

在不工作的例子中,我希望它与之匹配(我创建了一个获取我想要的匹配的函数,我只是在寻找一个与gsub一起使用的模式,如果一个lua模式可以做到这一点很好奇):

 string
 a" string" of
is' a" string" of' text
test
his "is' a" string" of' text" to "test" wit
Run Code Online (Sandbox Code Playgroud)

我将暂时继续使用我的功能,但我很好奇是否有我可以/应该使用的模式,我只是缺少模式的东西.

(一些编辑b/c我忘记了stackoverflows格式化)(另一个编辑来制作一个非html示例,因为它导致假设我试图解析html)

Nor*_*sey 5

尝试使用正则表达式匹配转义的引用文本就像尝试使用割草机从字段中删除雏菊(并且只有daises).

我创造了一个能够获得我想要的比赛的功能

这是正确的举动.

我很好奇,如果一个lua模式可以做到这一点

从实际的角度来看,即使一个模式可以做到这一点,你也不愿意. 从理论的角度来看,你试图找到一个双引号,前面是偶数个反斜杠.这绝对是一种常规语言,你想要的正则表达式如下(Lua引用约定)

[[[^\](\\)*"(.-[^\](\\)*)"]]
Run Code Online (Sandbox Code Playgroud)

引用的字符串将是结果#2.但是Lua模式不是完整的正则表达式; 特别是,你不能把一个*带括号的模式.所以我的猜测是使用Lua模式无法解决这个问题,但由于Lua模式在自动机理论中不是一个标准的东西,我不知道你可以用来证明它的任何证明技术.