首页 文章

Lua string.match()(Corona SDK)

提问于
浏览
3

我试图从服务器响应中提取auth代码,如:

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

我正在使用lua / Corona;

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

我得到的回答是零,不知道我错了什么......有谁知道或有更好的主意?

西九龙填海区,

-Sean

2 回答

  • 2

    字符 ? 本身就是一个模式修饰符 . 这就是你获得 nil 结果的原因 . 使用 % 来逃避这一点 .

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

    这是工作输出:https://eval.in/33065


    编辑

    这是another example相同,没有转义 ? 字符 . 这只是为了阐述我的观点 . :)

  • 1

    试着用这个:

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

相关问题