0

我有这些弹性规则:

^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 联机帮助页,但我仍然无助。

4

1 回答 1

2

我认为这里的问题是 flex 使用空格来分隔标记以进行正则表达式匹配。因此,当它解析您的文件时,它会将“^User-Agent:”之后的所有内容视为操作的一部分。您可以通过转义空间来完成这项工作:

^User-Agent:\ [^\n]*Firefox
^User-Agent:\ [^\n]*MSIE
^User-Agent:\ [^\n]*Opera
^User-Agent:\ [^\n]*Safari

我用 flex 2.5.35 测试过,会做你想做的事。

于 2012-11-06T19:56:12.357 回答