不区分大小写的JFlex正则表达式

时间:2012-10-18 01:45:22

标签: regex jflex

如何在JFlex中实现不区分大小写的正则表达式模式。

使用标准(?i :)表示法似乎不起作用。

例如:

To match the case insensitive word "class", the regex would be (?i:class).
But this doesn't work in a JFlex specification.

1 个答案:

答案 0 :(得分:5)

使用其中一个指令:

  • %caseless
  • %忽略大小写

来自the manual

  

此选项使JFlex处理规范中的所有字符和字符串,就像它们以大写和小写形式一样指定。这样可以轻松地为具有不区分大小写的关键字的语言指定扫描程序。例如,规范中的字符串“break”就像表达式([bB] [rR] [eE] [aA] [kK])那样处理。 %caseless选项不会更改匹配的文本,也不会影响字符类。所以[a]仍然只匹配字符a而不是A字符。哪些字母是大写字母和小写字母,由Unicode标准定义,并由JFlex使用Java方法Character.toUpperCase和Character.toLowerCase确定。在JLex兼容模式下(命令行上的-jlex开关),%casecase和%ignorecase也会影响字符类。