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/.*?\(.*\)\s.*$/\1/

你也可以试试。(\?[^\s]+) 在 ? 之后匹配尽可能多的非空格字符

于 2012-04-13T18:59:54.613 回答