如何在JFlex中实现不区分大小写的正则表达式模式。
使用标准(?i :)表示法似乎不起作用。
例如:
To match the case insensitive word "class", the regex would be (?i:class).
But this doesn't work in a JFlex specification.
答案 0 :(得分:5)
使用其中一个指令:
来自the manual:
此选项使JFlex处理规范中的所有字符和字符串,就像它们以大写和小写形式一样指定。这样可以轻松地为具有不区分大小写的关键字的语言指定扫描程序。例如,规范中的字符串“break”就像表达式([bB] [rR] [eE] [aA] [kK])那样处理。 %caseless选项不会更改匹配的文本,也不会影响字符类。所以[a]仍然只匹配字符a而不是A字符。哪些字母是大写字母和小写字母,由Unicode标准定义,并由JFlex使用Java方法Character.toUpperCase和Character.toLowerCase确定。在JLex兼容模式下(命令行上的-jlex开关),%casecase和%ignorecase也会影响字符类。