3

次のようなサーバー応答から認証コードを取得しようとしています。

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

ルア/コロナを使用しています。

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

応答がなく、何が間違っているのかわかりません...誰か知っているか、より良い考えを持っていますか?

wkr、

-ショーン

4

2 に答える 2

2

文字?自体は、パターン修飾子として機能します。これがnil結果を得る理由です。%これをエスケープするには a を使用します。

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

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

ここに作業出力があります: https://eval.in/33065


編集

これは、文字をエスケープせずに同じことを行う別の例です。?これは私の要点を詳しく説明するためのものです。:)

于 2013-06-08T23:46:14.687 に答える
1

これを使用してみてください:

string.match(request, "GET /%?state=authenticated&code=([^ ]+)")
于 2013-06-08T23:46:58.300 に答える