public final class Pattern extends Object implements Serializable
正規表現は、文字列として指定し、このクラスのインスタンスにコンパイルする必要があります。結果として得られるパターンは、Matcher
オブジェクトを作成するために使用されます。このオブジェクトは、任意の文字シーケンス
とこの正規表現をマッチできます。マッチを実行したときの状態はすべて正規表現エンジンに格納されます。このため、複数の正規表現エンジンが同じパターンを共有できます。
標準的な呼び出しシーケンスは、次のようになります。
Pattern p = Pattern.compile
("a*b"); Matcher m = p.matcher
("aaaaab"); boolean b = m.matches
();
このクラスに定義した matches
メソッドを使用すれば、正規表現は一度使用するだけで済みます。このメソッドを 1 回呼び出すだけで、表現がコンパイルされ、入力シーケンスとのマッチが行われます。次の文は、前述の 3 つの文と等価です。
ただし、マッチを繰り返す場合は、コンパイル済みのパターンを再利用できないため、効率が低下します。boolean b = Pattern.matches("a*b", "aaaaab");
このクラスのインスタンスは不変であるため、複数のスレッドで並行して使用できます。Matcher
クラスのインスタンスは、複数スレッドでの並行使用に対応していません。
正規表現構文のサマリー
構文 | マッチ |
---|---|
文字 | |
x | 文字 x |
\\ | バックスラッシュ文字 |
\0n | 8 進値 0n を持つ文字 (0 <= n <= 7) |
\0nn | 8 進値 0nn を持つ文字 (0 <= n <= 7) |
\0mnn | 8 進値 0mnn を持つ文字 (0 <= m <= 3, 0 <= n <= 7) |
\xhh | 16 進値 0xhh を持つ文字 |
\uhhhh | 16 進値 0xhhhh を持つ文字 |
\x{h...h} | 16 進値 0xh...h を持つ文字 (Character.MIN_CODE_POINT <= 0xh...h <=  Character.MAX_CODE_POINT ) |
\t | タブ文字 (「\u0009」) |
\n | 改行文字 (「\u000A」) |
\r | キャリッジリターン文字 (「\u000D」) |
\f | 用紙送り文字 (「\u000C」) |
\a | 警告 (ベル) 文字 (「\u0007」) |
\e | エスケープ文字 (「\u001B」) |
\cx | x に対応する制御文字 |
文字クラス | |
[abc] | a、b、または c (単純クラス) |
[^abc] | a、b、c 以外の文字 (否定) |
[a-zA-Z] | a - z または A - Z (範囲) |
[a-d[m-p]] | a - d または m - p: [a-dm-p] (結合) |
[a-z&&[def]] | d、e、または f (交差) |
[a-z&&[^bc]] | a - z (b と c を除く): [ad-z] (減算) |
[a-z&&[^m-p]] | a - z (m - p を除く): [a-lq-z] (減算) |
定義済みの文字クラス | |
. | 任意の文字 (行末記号とマッチする場合もある) |
\d | 数字: [0-9] |
\D | 数字以外: [^0-9] |
\s | 空白文字:[ \t\n\x0B\f\r] |
\S | 非空白文字:[^\s] |
\w | 単語構成文字:[a-zA-Z_0-9] |
\W | 非単語文字:[^\w] |
POSIX 文字クラス (US-ASCII のみ) | |
\p{Lower} | 小文字の英字:[a-z] |
\p{Upper} | 大文字の英字: [A-Z] |
\p{ASCII} | すべての ASCII 文字: [\x00-\x7F] |
\p{Alpha} | 英字: [\p{Lower}\p{Upper}] |
\p{Digit} | 10 進数字: [0-9] |
\p{Alnum} | 英数字: [\p{Alpha}\p{Digit}] |
\p{Punct} | 句読文字:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ のいずれか |
\p{Graph} | 表示できる文字:[\p{Alnum}\p{Punct}] |
\p{Print} | プリント可能文字:[\p{Graph}\x20] |
\p{Blank} | 空白またはタブ:[ \t] |
\p{Cntrl} | 制御文字:[\x00-\x1F\x7F] |
\p{XDigit} | 16 進数字:[0-9a-fA-F] |
\p{Space} | 空白文字:[ \t\n\x0B\f\r] |
java.lang.Character クラス (単純な java 文字タイプ) | |
\p{javaLowerCase} | java.lang.Character.isLowerCase() と等価 |
\p{javaUpperCase} | java.lang.Character.isUpperCase() と等価 |
\p{javaWhitespace} | java.lang.Character.isWhitespace() と等価 |
\p{javaMirrored} | java.lang.Character.isMirrored() と等価 |
Unicode 書体、ブロック、カテゴリ、バイナリプロパティーのクラス | |
\p{IsLatin} | Latin 書体文字 (書体) |
\p{InGreek} | Greek ブロックの文字 (ブロック) |
\p{Lu} | 大文字 (カテゴリ) |
\p{IsAlphabetic} | 英字 (バイナリプロパティー) |
\p{Sc} | 通貨記号 |
\P{InGreek} | ギリシャ語ブロック以外の文字 (否定) |
[\p{L}&&[^\p{Lu}]] | 大文字以外の文字 (減算) |
境界正規表現エンジン | |
^ | 行の先頭 |
$ | 行の末尾 |
\b | 単語境界 |
\B | 非単語境界 |
\A | 入力の先頭 |
\G | 前回のマッチの末尾 |
\Z | 最後の行末記号がある場合は、それを除く入力の末尾 |
\z | 入力の末尾 |
最長一致数量子 | |
X? | X、1 または 0 回 |
X* | X、0 回以上 |
X+ | X、1 回以上 |
X{n} | X、n 回 |
X{n,} | X、n 回以上 |
X{n,m} | X、n 回以上、m 回以下 |
最短一致数量子 | |
X?? | X、1 または 0 回 |
X*? | X、0 回以上 |
X+? | X、1 回以上 |
X{n}? | X、n 回 |
X{n,}? | X、n 回以上 |
X{n,m}? | X、n 回以上、m 回以下 |
強欲な数量子 | |
X?+ | X、1 または 0 回 |
X*+ | X、0 回以上 |
X++ | X、1 回以上 |
X{n}+ | X、n 回 |
X{n,}+ | X、n 回以上 |
X{n,m}+ | X、n 回以上、m 回以下 |
論理演算子 | |
XY | X の直後に Y |
X|Y | X または Y |
(X) | X、前方参照を行う正規表現グループ |
前方参照 | |
\n | マッチした n 番目の前方参照を行う正規表現グループ |
\k<name> | 「名前」がマッチした名前付きの前方参照を行うグループ |
引用 | |
\ | なし。だが、次の文字をエスケープする |
\Q | なし。だが、\E までのすべての文字をエスケープする |
\E | なし。だが、\Q で開始された引用をエスケープする |
特殊な構文 (名前付きの前方参照や前方参照を行わない) | |
(?<name>X) | X、名前付きの前方参照を行う正規表現グループ |
(?:X) | X、前方参照を行わない正規表現グループ |
(?idmsuxU-idmsuxU) | なし。だが、マッチフラグ i d m s u x U のオン/オフを切り替える |
(?idmsux-idmsux:X) | X、前方参照を行わないグループ。指定されたフラグ i d m s u x のオン/オフを切り替える |
(?=X) | X、幅ゼロの肯定先読み |
(?!X) | X、幅ゼロの否定先読み |
(?<=X) | X、幅ゼロの肯定後読み |
(?<!X) | X、幅ゼロの否定後読み |
(?>X) | X、独立した前方参照を行わない正規表現グループ |
バックスラッシュ文字 (「\」) は、前述の表に定義されているエスケープ構文を導入する役割を果たします。また、指定しなかった場合に非エスケープ構文と解釈される文字列をエスケープします。たとえば、正規表現 \\ は 1 つのバックスラッシュとマッチし、\{ は左括弧とマッチします。
英字の前にバックスラッシュを使用したときに、その英字がエスケープ構文でない場合は、エラーになります。これらのパターンは、正規表現言語の今後の拡張に予約されています。英字以外の文字の場合は、その文字が非エスケープ構文に含まれるかどうかにかかわらず、バックスラッシュを指定できます。
Java™ 言語仕様では、Java ソースコードの文字列リテラルに含まれるバックスラッシュは、Unicode エスケープ (セクション 3.3) やその他の文字エスケープ (セクション 3.10.6) として有効であると解釈されます。このため、バックスラッシュが Java バイトコードコンパイラによって解釈されないようにするには、正規表現を表す文字列リテラル内でバックスラッシュを 2 つ続ける必要があります。たとえば、文字列リテラル「\b」は、正規表現と解釈されると、バックスペース 1 文字とマッチされます。しかし、「\\b」は単語境界とマッチされます。また、文字列リテラル「\(hello\)」は不当になり、コンパイル時エラーが発生します。文字列 (hello) とマッチされるには、文字列リテラル \\(hello\\) を使用する必要があります。
文字クラスは、ほかの文字クラス内に指定したり、結合演算子 (暗黙的) や交差演算子 (&&) を使用して作成することができます。結合演算子は、1 つ以上のオペランドクラスに含まれるすべての文字を含むクラスを表します。交差演算子は、2 つのオペランドクラスに含まれるすべての文字を含むクラスを表します。
文字クラス演算子は、次の順で優先順位が高くなります。
実際には、異なるメタキャラクタのセットは、文字クラスの外部ではなく内部に存在することに留意してください。たとえば、正規表現 . は、文字クラス内部ではその特殊な意味を失いますが、表現 - は範囲を示すメタキャラクタになります。
行末記号とは、入力文字シーケンスの行の末尾を指定するときに使用する、1 文字または 2 文字の文字シーケンスです。次の文字が行末記号として認識されます。
正規表現 . は、 デフォルトでは、正規表現 ^ および $ は行末記号を無視し、入力シーケンス全体のそれぞれ先頭と末尾だけにマッチします。 前方参照を行う正規表現グループには、左から右方向に左丸括弧を数えることによって、番号が付けられます。たとえば、表現 ((A)(B(C))) は、次の 4 つのグループに分類されます。 グループ 0 は、常に表現全体を表します。
前方参照を行う正規表現グループがこのように分類されてから、入力シーケンスの各部分シーケンスがこれらのグループとマッチされ、マッチするたびに部分シーケンスが保存されます。正規表現グループの部分シーケンスは、前方参照として表現内であとで使用できます。また、マッチ操作が完了したら、正規表現エンジンから取り出すこともできます。
前方参照を行う正規表現グループには「名前」を割り当てることもでき (名前付きの前方参照を行う正規表現グループ)、あとで「名前」によって後方参照できます。グループ名は、次の文字で構成されます。最初の文字は英字である必要があります。
名前付きの前方参照を行う正規表現グループも、グループ番号で説明するように番号付けされます。
グループと入力シーケンスがマッチされると、そのグループと最後にマッチした部分シーケンスが常に前方参照されます。数量子を指定した場合は、グループがもう一度評価されます。 2 回目の評価が失敗した場合でも、その前に前方参照された値がある場合は、その値が保持されます。たとえば、文字列「aba」を表現 (a(b)?)+ とマッチした場合は、グループ 2 に設定された「b」が保持されます。前方参照されたすべての入力は、各マッチが始まる前に破棄されます。
(? で始まるグループは、純粋な前方参照されない正規表現グループで、テキストを前方参照せず、グループ全体または名前付きの前方参照を行う正規表現グループにカウントされません。
このクラスは、『Unicode Technical Standard #18: Unicode Regular Expression』(ユニコードテクニカルスタンダード No.18: ユニコード正規表現ガイドライン) の Level 1 および、リリース 2.1『Canonical Equivalents』(正規等価) に適合しています。
Java ソースコードでは、\u2014 などの Unicode エスケープシーケンスは、「Java™ 言語仕様」のセクション 3.3 に基づいて処理されます。これらのエスケープシーケンスは、正規表現パーサーによって直接実装されるため、ファイルまたはキーボードから読み込んだ表現の中でも Unicode エスケープを使用できます。つまり、文字列「\u2014」と「\\u2014」は等価ではありませんが、同じパターンにコンパイルされ、16 進値 0x2014 の文字とマッチします。
Unicode 文字は、コンストラクト \x{...} で説明するように、その 16 進表記 (16 進コードポイント値) を直接使用して、正規表現でも表すことができます。たとえば、補助文字 U+2011F は、サロゲートペア \uD840\uDD1F の 2 つの連続する Unicode エスケープシーケンスの代わりに、\x{2011F} と指定できます。
Unicode 書体、ブロック、カテゴリ、およびバイナリプロパティーは、Perl と同様に \p および \P 構文で記述します。入力にプロパティー prop が含まれる場合、\p{prop} はマッチしますが、\P{prop} はマッチしません。
書体、ブロック、カテゴリ、およびバイナリプロパティーは、文字クラスの内部および外部のどちらにも使用できます。
書体は、
ブロックは、
カテゴリはオプションの接頭辞
サポートされているカテゴリは、
バイナリプロパティーは、
定義済みの文字クラスと POSIX 文字クラスは、
文字クラス
1
リテラルエスケープ
\x 2
グループ化
[...] 3
範囲
a-z 4
論理和
[a-e][i-u] 5
論理積
[a-z&&[aeiou]] 行末記号
UNIX_LINES
モードが有効な場合は、改行文字だけが行末記号として認識されます。
DOTALL
フラグが指定されていない場合、行末記号以外のすべての文字とマッチします。
MULTILINE
モードがアクティブになると、^ は入力の先頭、および入力の末尾を除くすべての行末記号の後にマッチします。MULTILINE
モードの場合、$ は行末記号の直前、または入力シーケンスの末尾にマッチします。
正規表現グループと前方参照
グループ番号
1
((A)(B(C))) 2
(A) 3
(B(C)) 4
(C) グループ名
Unicode サポート
IsHiragana
のように、接頭辞 Is
を付けて指定するか、または、script=Hiragana
や sc=Hiragana
のように、script
キーワード (またはその短縮形式 sc
) を使用して指定します。
Pattern
のサポートする書体名は、UnicodeScript.forName
によって受け入れられ、定義される有効な書体名です。
InMongolian
のように、接頭辞 In
を付けて指定するか、または、block=Mongolian
や blk=Mongolian
のように、block
キーワード (またはその短縮形式 blk
) を使用して指定します。
Pattern
のサポートするブロック名は、UnicodeBlock.forName
によって受け入れられ、定義される有効なブロック名です。
Is
によって指定できます。\p{L}
と \p{IsL}
のどちらも Unicode 文字のカテゴリを示します。書体やブロックと同じように、カテゴリも general_category=Lu
や gc=Lu
のように、キーワード general_category
(またはその短縮形式 gc
) を使用して指定することができます。
Character
クラスで指定されたバージョンの The Unicode Standard に記載されています。カテゴリ名については、標準に規準と情報が定義されています。
IsAlphabetic
のように、接頭辞 Is
を使用して指定します。Pattern
によってサポートされるバイナリプロパティーは次のとおりです
UNICODE_CHARACTER_CLASS
フラグが指定されている場合、Unicode Regular Expression の Annex C: Compatibility Properties の勧告に適合しています。
クラス | マッチ |
---|---|
\p{Lower} | 小文字:\p{IsLowercase} |
\p{Upper} | 大文字:\p{IsUppercase} |
\p{ASCII} | すべての ASCII 文字: [\x00-\x7F] |
\p{Alpha} | 英字:\p{IsAlphabetic} |
\p{Digit} | 10 進数字:p{IsDigit} |
\p{Alnum} | 英数字:[\p{IsAlphabetic}\p{IsDigit}] |
\p{Punct} | 句読点文字:p{IsPunctuation} |
\p{Graph} | 表示できる文字:[^\p{IsWhite_Space}\p{gc=Cc}\p{gc=Cs}\p{gc=Cn}] |
\p{Print} | プリント可能文字:[\p{Graph}\p{Blank}&&[^\p{Cntrl}]] |
\p{Blank} | 空白またはタブ:[\p{IsWhite_Space}&&[^\p{gc=Zl}\p{gc=Zp}\x0a\x0b\x0c\x0d\x85]] |
\p{Cntrl} | 制御文字:\p{gc=Cc} |
\p{XDigit} | 16 進数字:[\p{gc=Nd}\p{IsHex_Digit}] |
\p{Space} | 空白文字:\p{IsWhite_Space} |
\d | 数字:\p{IsDigit} |
\D | 数字以外:[^\d] |
\s | 空白文字:\p{IsWhite_Space} |
\S | 非空白文字:[^\s] |
\w | 単語構成文字:[\p{Alpha}\p{gc=Mn}\p{gc=Me}\p{gc=Mc}\p{Digit}\p{gc=Pc}] |
\W | 非単語文字:[^\w] |
methodname メソッド (非推奨のメソッドを除く) である java.lang.Character boolean と同様に機能するカテゴリは、指定されたプロパティーが名前 javamethodname を持つ、同一の \p{prop} 構文全体で使用可能です。
このクラスでサポートされていない Perl 構文 定義済みの文字クラス (Unicode 文字)
\h 水平方向の空白
\h 水平方向でない空白
\v 垂直方向の空白
\v 垂直方向でない空白
\R 任意の Unicode 改行シーケンス \u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
\X Unicode 拡張書記素クラスタに一致
後方参照構文、n 番目の前方参照を行う正規表現グループの場合 \g{n}、名前付きの前方参照を行う正規表現グループの場合 \g{名前}。
名前付きの文字構文、その名前による Unicode 文字の場合 \N{名前}。
条件付き構文 (?(条件)X) および (?(条件)X|Y)
埋め込みコード構文 (?{コード}) および (??{コード}) 埋め込みコメント構文 (?#comment) プリプロセス演算 \l \u、\L、および \U。 このクラスでサポートされているが、Perl でサポートされていない構文。 文字クラスの結合と交差 (前述)。 Perl との大きな相違点 Perl では、\1 から \9 は常に前方参照と解釈される。 9 を超える数字がバックスラッシュでエスケープされているときは、対応する数の部分パターンが存在する場合、前方参照とみなされる。存在しない場合は、8 進数のエスケープ (可能な場合) とみなされる。このクラスでは、8 進数のエスケープは常にゼロで始まる。\1 - \9 は、常に前方参照と解釈される。それより大きい数字は、正規表現のその箇所に対応する数の部分パターンが存在する場合は、前方参照とみなされる。存在しない場合は、その数字が既存のグループ番号以下になるか、1 桁の数字になるまで、桁が減らされる。
Perl では、最後のマッチが終了した場所からマッチの再開を要求するときは、g フラグを使用する。この機能は、 Perl では、表現の最上位に埋め込まれたフラグが表現全体に適用される。このクラスの埋め込みフラグは、埋め込まれた場所にかかわらず、その箇所でのみ有効になる。フラグがグループ内に埋め込まれている場合は、Perl と同様にグループの最後で復元される。 正規表現構文の動作の詳細については、『Mastering Regular Expressions, 3rd Edition』(Jeffrey E. F. Friedl 著、O'Reilly and Associates、2006 年) を参照してください。
Perl 5 との比較
Pattern
エンジンは、Perl 5 と同じく、順序付けされた代替に対する従来の NFA ベースのマッチングを実行します。
Matcher
クラスによって暗黙的に提供される。find
メソッドを繰り返し呼び出すと、正規表現エンジンがリセットされないかぎり、最後のマッチが終了した場所からマッチ操作が再開する。
String.split(String, int)
, String.split(String)
, 直列化された形式修飾子と型 | フィールドと説明 |
---|---|
static int |
CANON_EQ
正規等価を有効にします。
|
static int |
CASE_INSENSITIVE
大文字と小文字を区別しないマッチングを有効にします。
|
static int |
COMMENTS
パターン内で空白とコメントを使用できるようにします。
|
static int |
DOTALL
DOTALL モードを有効にします。
|
static int |
LITERAL
パターンのリテラル構文解析を有効にします。
|
static int |
MULTILINE
複数行モードを有効にします。
|
static int |
UNICODE_CASE
Unicode に準拠した大文字と小文字を区別しないマッチングを有効にします。
|
static int |
UNICODE_CHARACTER_CLASS
定義済みの文字クラスと POSIX 文字クラスの Unicode バージョンを使用可能にします。
|
static int |
UNIX_LINES
Unix ラインモードを有効にします。
|
修飾子と型 | メソッドと説明 |
---|---|
static Pattern |
compile(String regex)
指定された正規表現をパターンにコンパイルします。
|
static Pattern |
compile(String regex, int flags)
指定されたフラグを使用して、指定された正規表現をパターンにコンパイルします。
|
int |
flags()
このパターンのマッチフラグを返します。
|
Matcher |
matcher(CharSequence input)
指定された入力とこのパターンをマッチする正規表現エンジンを作成します。
|
static boolean |
matches(String regex, CharSequence input)
指定された正規表現をコンパイルして、指定された入力とその正規表現をマッチします。
|
String |
pattern()
このパターンのコンパイル元の正規表現を返します。
|
static String |
quote(String s)
指定された
String のリテラルパターン String を返します。 |
String[] |
split(CharSequence input)
このパターンのマッチに基づいて、指定された入力シーケンスを分割します。
|
String[] |
split(CharSequence input, int limit)
このパターンのマッチに基づいて、指定された入力シーケンスを分割します。
|
String |
toString()
このパターンの文字列表現を返します。
|
public static final int UNIX_LINES
このモードでは、「\n」行末記号以外は、.、^、および $ の動作で認識されません。
Unix ラインモードは、埋め込みフラグ表現 (?d) 使用して有効にすることもできます。
public static final int CASE_INSENSITIVE
デフォルトの大文字と小文字を区別しないマッチングでは、US-ASCII 文字セットの文字だけがマッチします。Unicode に準拠した大文字と小文字を区別しないマッチングを有効にするには、UNICODE_CASE
フラグをこのフラグと組み合わせて指定します。
大文字と小文字を区別しないマッチングは、埋め込みフラグ表現 (?i) を使用して有効にすることもできます。
このフラグを指定すると、パフォーマンスがわずかに低下する場合があります。
public static final int COMMENTS
このモードでは、空白は無視され、# で始まる埋め込みコメントは行末まで無視されます。
コメントモードは、埋め込みフラグ表現 (?x) を使用して有効にすることもできます。
public static final int MULTILINE
複数行モードでは、表現 ^ と $ は、それぞれ行末記号または入力シーケンスの末尾の直後または直前にマッチします。デフォルトでは、これらの表現は入力シーケンス全体の先頭と末尾にだけマッチします。
複数行モードは、埋め込みフラグ表現 (?m) を使用して有効にすることもできます。
public static final int LITERAL
このフラグが指定されている場合、パターンを指定する入力文字列は、リテラル文字のシーケンスとして処理されます。入力シーケンス内のメタキャラクタまたはエスケープシーケンスに、特別な意味はありません。
CASE_INSENSITIVE および UNICODE_CASE フラグをこのフラグとともに使用すると、マッチングに対する影響が維持されます。ほかのフラグは不要になります。
リテラル構文解析を有効にするための埋め込みフラグ文字はありません。
public static final int DOTALL
DOTALL モードでは、表現 . は行末記号を含む任意の文字にマッチします。デフォルトでは、この表現は行末記号にマッチしません。
DOTALL モードは、埋め込みフラグ表現 (?s) を使用して有効にすることもできます。(s は「single-line (単一行)」モードのニーモニック。Perl ではこう呼ばれている。)
public static final int UNICODE_CASE
このフラグと CASE_INSENSITIVE
フラグを同時に指定した場合は、Unicode 標準に準拠した大文字と小文字を区別しないマッチングが行われます。デフォルトの大文字と小文字を区別しないマッチングでは、US-ASCII 文字セットの文字だけがマッチします。
Unicode に準拠した大文字と小文字を区別しないマッチングは、埋め込みフラグ表現 (?u) を使用して有効にすることもできます。
このフラグを指定すると、パフォーマンスが低下する場合があります。
public static final int CANON_EQ
このフラグを指定したときは、2 つの文字の完全な正規分解がマッチした場合に限り、それらの文字がマッチするとみなされます。たとえば、このフラグを指定すると、表現「a\u030A」は文字列「\u00E5」にマッチします。デフォルトのマッチングでは、正規等価が考慮されません。
正規等価を有効にするための埋め込みフラグ文字はありません。
このフラグを指定すると、パフォーマンスが低下する場合があります。
public static final int UNICODE_CHARACTER_CLASS
このフラグが指定されている場合、(US-ASCII のみ) 定義済みの文字クラスと POSIX 文字クラスは「Unicode Technical Standard #18: Unicode Regular Expression」の「Annex C: Compatibility Properties」に適合しています。
UNICODE_CHARACTER_CLASS ラインモードは、埋め込みフラグ表現 (?U) 使用して有効にすることもできます。
フラグは UNICODE_CASE を意味しています。つまり、Unicode に準拠した大文字と小文字を区別しないマッチングを有効にします。
このフラグを指定すると、パフォーマンスが低下する場合があります。
public static Pattern compile(String regex)
regex
- コンパイルされる表現PatternSyntaxException
- 表現の構文が無効である場合public static Pattern compile(String regex, int flags)
regex
- コンパイルされる表現flags
- マッチフラグ。CASE_INSENSITIVE
、MULTILINE
、DOTALL
、UNICODE_CASE
、CANON_EQ
, UNIX_LINES
、LITERAL
、UNICODE_CHARACTER_CLASS
、および COMMENTS
を含めることができるビットマスクIllegalArgumentException
- 定義済みマッチフラグに対応するビット値以外の値が flags に設定されている場合PatternSyntaxException
- 表現の構文が無効である場合public String pattern()
public String toString()
このパターンの文字列表現を返します。これは、このパターンのコンパイル元の正規表現です。
public Matcher matcher(CharSequence input)
input
- マッチされる文字シーケンスpublic int flags()
public static boolean matches(String regex, CharSequence input)
このメソッドを次の形式で呼び出すと、上記の動作が行われます。
上記のメソッドは、次の表現と同様に動作します。Pattern.matches(regex, input);
Pattern.compile(regex).matcher(input).matches()
パターンを繰り返し使用する場合は、そのパターンをコンパイルして再利用した方が、毎回このメソッドを呼び出すよりも効率的です。
regex
- コンパイルされる表現input
- マッチされる文字シーケンスPatternSyntaxException
- 表現の構文が無効である場合public String[] split(CharSequence input, int limit)
このメソッドから返される配列は、入力シーケンスの部分文字列で構成されます。これらの部分文字列は、このパターンとマッチする別の部分シーケンスによって分割された文字列か、入力シーケンスの終了によって分割された文字列です。配列内の部分文字列は、入力シーケンス内で発生した順番に並んでいます。このパターンが入力シーケンスの部分シーケンスにマッチしない場合、結果として得られる配列は 1 つの要素、つまり文字列形式の入力シーケンスだけで構成されます。
limit パラメータは、このパターンの適用回数を制御するため、結果として得られる配列の長さに影響を及ぼします。制限 n がゼロより大きい場合、このパターンは最大で n - 1 回まで適用され、配列の長さは n 以下となります。配列の最後のエントリには、最後に一致した区切り文字以降の入力シーケンスがすべて含まれます。n が負の値の場合、このパターンの適用回数と配列の長さは制限されません。n がゼロの場合、このパターンの適用回数と配列の長さは制限されませんが、後続の空の文字列は破棄されます。
たとえば、入力シーケンス「boo:and:foo」は、これらのパラメータによって次のように分割されます。
正規表現
制限
結果
: 2 { "boo", "and:foo" } : 5 { "boo", "and", "foo" } : -2 { "boo", "and", "foo" } o 5 { "b", "", ":and:f", "", "" } o -2 { "b", "", ":and:f", "", "" } o 0 { "b", "", ":and:f" }
input
- 分割される文字シーケンスlimit
- 結果のしきい値 (上記のとおり)public String[] split(CharSequence input)
このメソッドの動作は、2 つの引数を取る split
メソッドを、指定された入力シーケンスとゼロの制限引数を指定して呼び出した場合と同じになります。つまり、結果として得られる配列には後続の空の文字列は含まれません。
たとえば、入力シーケンス「boo:and:foo」は、これらの表現によって次のように分割されます。
正規表現
結果
: { "boo", "and", "foo" } o { "b", "", ":and:f" }
input
- 分割される文字シーケンス バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.