Lua字符串匹配函数(Corona SDK)

我正在尝试从服务器响应中提取身份验证代码,例如:

GET /?state=authenticated&code=U946s9lHouBGWy8o45bXSRSXGzTqd0Ys HTTP/1.1

我使用的是lua / Corona;

string.match(request, "GET /?state=authenticated&code=([%w--_/.=?]+)")

我得到了一个空响应,不知道我做错了什么...有人知道或有更好的建议吗?

wkr,

肖恩

点赞
用户1190388
用户1190388

字符 ? 本身就是一个模式修饰符。这就是为什么您得到 nil 结果的原因。使用 % 进行转义。

str = "GET /?state=authenticated&code=U946s9lHouBGWy8o45bXSRSXGzTqd0Ys HTTP/1.1"

print (str:match("GET /%?state=(%w+)&code=(%w+)"))

这里是有效的输出: https://eval.in/33065


编辑

这是另一个示例,针对相同的问题而言,没有转义字符 ?。这只是为了阐述我的观点。 :)

2013-06-08 23:46:14
用户2255089
用户2255089

尝试使用以下代码:

string.match(请求,“GET /%?state=authenticated&code=([^ ] +)”)
2013-06-08 23:46:58