10

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

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

例如:

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

1 回答 1

7

使用以下指令之一:

  • %无壳
  • %忽略大小写

手册

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

于 2012-10-18T20:45:08.983 回答