【发布时间】:2014-07-01 18:11:36
【问题描述】:
我正在尝试为 Flex 中的词法分析匹配一个准确的单词。具体来说,我正在寻找单词class,并尝试了这个正则表达式\bclass\b,它在rubular 中运行良好。我已经尝试过给定here 的示例,但由于某种原因,Flex 无法模拟rubular 的输出。你能解释一下为什么吗?以及具体怎么做?
【问题讨论】:
标签: regex flex-lexer
我正在尝试为 Flex 中的词法分析匹配一个准确的单词。具体来说,我正在寻找单词class,并尝试了这个正则表达式\bclass\b,它在rubular 中运行良好。我已经尝试过给定here 的示例,但由于某种原因,Flex 无法模拟rubular 的输出。你能解释一下为什么吗?以及具体怎么做?
【问题讨论】:
标签: regex flex-lexer
简单地说,因为flex 是flex 而www.rubular.com 是“一个Ruby 正则表达式编辑器”(引用自主页,强调了)。
Flex正则表达式语法在flex manual中解释;如果你读到了,你会看到 flex 解释 \b 就像在标准 C 中一样;也就是说,作为退格字符。
了解 Flex 的工作原理很重要(阅读介绍性指南很有用,例如手册中的);总之,它连续匹配标记,每个标记紧跟在前一个标记之后。不需要提供边界断言,因为之前的文本已经匹配到单词的开头,并且应该有一个明确的标记模式来匹配恰好以目标单词的字母开头的较长单词。例如,看一下Wikipedia article 中的示例。
【讨论】: