2

JFlex 的 [[:jletterdigit:]] 中有哪些字符?我需要将 [[:jletterdigit:]] 翻译成经典的正则表达式。

4

2 回答 2

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
于 2014-11-28T10:30:09.853 回答
1

如果满足以下任一条件,则字符可能是 Java 标识符的一部分:

这是一封信

它是一个货币符号(例如'$')

它是一个连接标点符号(例如'_')

这是一个数字

它是一个数字字母(如罗马数字字符)

它是一个组合标记

它是一个非间距标记

isIdentifierIgnorable 为字符返回 true

来自 Java API

于 2011-01-05T14:59:04.277 回答