JFlex 的 [[:jletterdigit:]] 中有哪些字符?我需要将 [[:jletterdigit:]] 翻译成经典的正则表达式。
2 回答
为了澄清 Michael Lowman 的回答:这就是JFlex 文档所说的:
jletter 和 jletterdigit 是预定义的字符类。jletter 包括 Java 函数 Character.isJavaIdentifierStart 为其返回 true 的所有字符,而 jletterdigit 包含该 Character.isJavaIdentifierPart 为其返回 true 的所有字符。
而他写的是Character.isJavaIdentifierPart 的文档:
确定指定字符是否可以是 Java 标识符的一部分,而不是第一个字符。
如果满足以下任一条件,则字符可能是 Java 标识符的一部分:
it is a letter it is a currency symbol (such as '$') it is a connecting punctuation character (such as '_') it is a digit it is a numeric letter (such as a Roman numeral character) it is a combining mark it is a non-spacing mark isIdentifierIgnorable returns true for the character
isIdentifierIgnorable 又被定义为:
确定是否应将指定字符(Unicode 代码点)视为 Java 标识符或 Unicode 标识符中的可忽略字符。
在 Java 标识符或 Unicode 标识符中可以忽略以下 Unicode 字符:
ISO control characters that are not whitespace '\u0000' through '\u0008' '\u000E' through '\u001B' '\u007F' through '\u009F' all characters that have the FORMAT general category value
如果满足以下任一条件,则字符可能是 Java 标识符的一部分:
这是一封信
它是一个货币符号(例如'$')
它是一个连接标点符号(例如'_')
这是一个数字
它是一个数字字母(如罗马数字字符)
它是一个组合标记
它是一个非间距标记
isIdentifierIgnorable 为字符返回 true