前瞻断言(正则表达式)在 JFlex 中不起作用



我正在尝试使用JFlex生成扫描仪。

我尝试实现的语法的标识符规则之一如下(在正则表达式语法中):

[a-zA-Z]((_(?!_)|[a-zA-Z0-9])*[a-zA-Z0-9])?

我已经验证了上述表达式实际上是有效的并且有效。但是,jFlex 1.4.3似乎不喜欢我使用前瞻断言(?!_)因为它一直在抱怨"问号"。是我做错了什么,还是在 JFlex 中使用前瞻有什么不同?

我正在使用"前瞻"来满足规则,即标识符名称中不能有两个连续的下划线。

任何帮助将不胜感激。

而不是

[a-zA-Z]((_(?!_)|[a-zA-Z0-9])*[a-zA-Z0-9])? 

使用优化模式

[a-zA-Z]+(_[a-zA-Z0-9]+|[a-zA-Z0-9]+)* 

相关内容

  • 没有找到相关文章

最新更新