【问题标题】:Setting up rules for Flex, warning:"rule cannot be matched"为 Flex 设置规则,警告:“规则无法匹配”
【发布时间】:2012-11-01 13:43:17
【问题描述】:

我有这些弹性规则:

^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 手册页,但我仍然无能为力。

【问题讨论】:

    标签: regex lexical-analysis flex-lexer


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      相关资源
      最近更新 更多