2

この Java 正規表現を見つけましたが、何が一致するのかわかりませんか?

Pattern.compile("\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*(\\.\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*)*");

何がjavaJavaIdentifierStart一致しますか?

4

3 に答える 3

3

\\p{javaJavaIdentifierStart}有効な Java 識別子の最初の文字として受け入れられる文字を意味します。

\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*\\.\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*意味anyIdentifier.anyIdentifier- ドットで区切られた 2 つの Java 識別子 (名前空間名とクラス名、クラス名と静的メンバー名、オブジェクト名とメンバー名など)

完全な(修正された)正規表現は、(おそらく修飾された)Java識別子を意味します-単純な「名前」またはドットで区切られた「名前」のチェーン。ただし、完全修飾名である必要はありません。

于 2013-10-29T13:19:06.000 に答える
2

Java の Character クラスからこのメソッドを呼び出すのと同じだと思います。

isJavaIdentifierStart

public static boolean isJavaIdentifierStart(char ch)
Determines if the specified character is permissible as the first character in a Java identifier.
A character may start a Java identifier if and only if one of the following conditions is true:

isLetter(ch) returns true
getType(ch) returns LETTER_NUMBER
ch is a currency symbol (such as "$")
ch is a connecting punctuation character (such as "_").
Note: This method cannot handle supplementary characters. To support all Unicode characters,     including supplementary characters, use the isJavaIdentifierStart(int) method.

Parameters:
ch - the character to be tested.
Returns:
true if the character may start a Java identifier; false otherwise.

ソース(もう少し読みやすい)

于 2013-10-29T13:18:31.310 に答える