0

LOG ファイルの URL からいくつかのデータを抽出しようとしていますが、ほとんどそこにいますが、最後の部分で行き詰まっています。

これが私がこれまでに思いついた正規表現です。

(\?.*\s+)

私が扱っている URL の例

json?userId=1234&email=blahblah@blah.com HTTP/1.1

そして抜きたい

userId=1234&email=blahblah@blah.com

類似した URL 行の複数行にわたる。上記の正規表現は、開始時に適切なものを取得しますが、空白の後で停止しません。を含めないようにするために何が欠けていますか?適切に空白で終了しますか?

編集:質問を少し明確にしました。

4

2 に答える 2

1

私はそのようにしていた:

\?([^ ]*) -> \1

私はあなたの実装を知りませんが、http://regexpal.com/で「動作」しています(このテスターは置き換えません) 。

編集:「?」を忘れました

于 2012-04-13T18:50:05.827 に答える
0

これはsedで動作します。

echo "json?userId=1234&email=blahblah@blah.com HTTP/1.1" | sed の/.*?\(.*\)\s.*$/\1/

あなたも試してみてください。(\?[^\s]+) ? の後のスペース以外の文字に一致します。

于 2012-04-13T18:59:54.613 に答える