正規表現で「\\ P {すべて}」の意味は何ですか?

鵬飛占:

私は、次のステートメントを持っているいくつかのJavaコードで働いています:

if (sql1.matches("(?i)^CREATE\\s+TABLE\\p{all}*")) {
     // do something;
}

私は正規表現の構文を検索しましたし、使用するルールを見つけることができません\\p{all}だから、この式の意味は何ですか?

Wiktor第Stribiżav:

Unicodeのallカテゴリは、改行などを含め、任意の文字に一致するようにカテゴリのリストに「手動」追加されます

参照のJava regexソースコードを

map.put("all", new CharPropertyFactory() {
                CharProperty make() { return new All(); }});

その後、この部分

/**
 * Implements the Unicode category ALL and the dot metacharacter when
 * in dotall mode.
 */
static final class All extends CharProperty {
    boolean isSatisfiedBy(int ch) {
        return true;
    }
}

All()インスタンス化するために使用され.DOTALL参照して、モードこの部分を

case '.':
    next();
    if (has(DOTALL)) {
        node = new All();
    } ....

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=176388&siteId=1