LookAhead无法在JFlex中运行

时间:2011-10-17 23:15:49

标签: regex nlp flex-lexer jflex

我正在尝试使用JFlex构建解析器但遇到一个非常基本的问题。 我想要这个令牌

[A-Za-z]+_N$ { System.out.println("Noun"); }

并让它将“car_N”识别为“名词”而不识别“car_NN”。 但如果我使用

,它就不起作用
[A-Za-z]+_N { System.out.println("Noun"); } 

“car_N”得到识别,但“car_NN”也返回“car_N”,这不是我想要的。

我想知道有谁知道如何提供帮助?

JFlex和Flex预测符号'$'似乎无法正常工作

1 个答案:

答案 0 :(得分:2)

我认为你误解了'$'的含义。作为一个先行,它只匹配一行文本的末尾(强硬中断)。因此它工作得非常好。但它无法区分car_N和car_NN,除了car_N位于一条线末端的实例。也许你真的想要一个前瞻性的东西:

[A-Za-z]+_N/[^A-Za-z]