我有以下来自 apache 的行(更改 apache 日志格式不是一种选择):
... referrer=- user_agent=JSON-RPC Client status=200 size=44 ...
我正在尝试用 Ragel 解析它。我正在提取除 user_agent 之外的所有字段。用户指南说,强烈的差异--
确保第一台机器不包含第二台机器。就我而言,我想匹配任何不包含的内容" status="
,这将表示下一个字段。但是,我目前的定义(如下)似乎user_agent
完全跳过了;我仍然得到status
并关注领域。我是否正确利用了强烈的差异?
...
referrer = ^space+ >mark %{ emit("referrer"); };
user_agent = any* -- ' status=' >mark %{ emit("user_agent"); };
status = digit+ >mark %{ emit("status"); };
...
line = (
...
space "referrer="
referrer
space "user_agent="
user_agent
space "status="
status
space "size="
...
);