我有这些弹性规则:
^User-Agent: [^\n]*Firefox {useragent = TFIREFOX; }
^User-Agent: [^\n]*MSIE {useragent = TMSIE; }
^User-Agent: [^\n]*Opera {useragent = TOPERA; }
^User-Agent: [^\n]*Safari {guseragent = TSAFARI; }
...
我在第一条规则之后的所有行上收到警告:rule cannot be matched
。我希望第一条规则只匹配线条,其中包含“Firefox”,但我认为我错了。如何修复这些规则?我阅读flex manpage,我仍然无助。
答案 0 :(得分:2)
我认为这里的问题是flex使用空格来分隔令牌以进行正则表达式匹配。因此,当它解析您的文件时,它会将“^ User-Agent:”之后的所有内容视为操作的一部分。你可以通过逃避空间来完成这项工作:
^User-Agent:\ [^\n]*Firefox
^User-Agent:\ [^\n]*MSIE
^User-Agent:\ [^\n]*Opera
^User-Agent:\ [^\n]*Safari
我用flex 2.5.35测试过,会做你想做的事。