sscanf读取自定义简单日志格式?

时间:2010-09-02 01:52:15

标签: parsing logging scanf

我为我的网站写了一个简单的日志文件,格式如下:

TIME: "..." IP: "..." HOST: "..." UA: "..." 

并希望通过sscanf解析它作为练习的一部分。我的代码大致是这样的,它在日志的每一行上运行:

list($time, $ip, $host, $ua) = sscanf("TIME: %s IP: %s HOST: %s UA: %s", $line);

当然这是PHP,但它无关紧要,现在我想到这会起作用,但它只是不解析任何东西。我现在知道因为用户代理或时间包含空格而搞乱了所以它不起作用。

我对sscanf格式了解不多,但是为了简单起见,希望使用它,有没有办法将引号作为单个实体读取(而不是仅使用普通的%s),这样它可以正常工作?

我有很多类似格式的日志,所以如果我能让这个例子起作用,这将是非常有用的。谢谢!

1 个答案:

答案 0 :(得分:0)

我想我只会使用正则表达式,例如"(?:[^\\"]+|\\.)*"来完成它。