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