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] |
\h | 水平方向の空白文字: [ \t\xA0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000] |
\H | 水平方向以外の空白文字: [^\h] |
\s | 空白文字: [\t\n\x0B\f\r] |
\S | 非空白文字: [^\s] |
\v | 垂直方向の空白文字: [\n\x0B\f\r\x85\u2028\u2029] |
\V | 垂直方向以外の空白文字: [^\v] |
\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} |
句読文字: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ |
\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 | 入力の末尾 |
改行正規表現エンジン | |
\R | すべてのUnicode改行シーケンスは、\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029] に等しい |
最長一致数量子 | |
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(tm)言語仕様では、Javaソース・コードの文字列リテラルに含まれるバックスラッシュは、Unicodeエスケープ(セクション3.3)やその他の文字エスケープ(セクション3.10.6)として必須と解釈されます。このため、バックスラッシュがJavaバイトコード・コンパイラによって解釈されないようにするには、正規表現を表す文字列リテラル内でバックスラッシュを2つ続ける必要があります。たとえば、文字列リテラル「\b」は、正規表現と解釈されると、バックスペース1文字とマッチされます。しかし、「\\b」は単語境界とマッチされます。また、文字列リテラル「\(hello\)」は不当になり、コンパイル時エラーが発生します。文字列(hello)とマッチされるには、文字列リテラル\\(hello\\)を使用する必要があります。
文字クラスは、ほかの文字クラス内に指定したり、結合演算子(暗黙的)や交差演算子(&&)を使用して作成することができます。結合演算子は、1つ以上のオペランド・クラスに含まれるすべての文字を含むクラスを表します。交差演算子は、2つのオペランド・クラスに含まれるすべての文字を含むクラスを表します。
文字クラス演算子は、次の順で優先順位が高くなります。
1 リテラル・エスケープ \x 2 グループ化 [...] 3 範囲 a-z 4 論理和 [a-e][i-u] 5 論理積 [a-z&&[aeiou]]
実際には、異なるメタキャラクタのセットは、文字クラスの外部ではなく内部に存在することに留意してください。たとえば、正規表現.は、文字クラス内部ではその特殊な意味を失いますが、表現-は範囲を示すメタキャラクタになります。
行末記号とは、入力文字シーケンスの行の末尾を指定するときに使用する、1文字または2文字の文字シーケンスです。次の文字が行末記号として認識されます。
UNIX_LINES
モードが有効な場合は、改行文字だけが行末記号として認識されます。
正規表現.は、DOTALL
フラグが指定されていない場合、行末記号以外のすべての文字とマッチします。
デフォルトでは、正規表現^および$は行末記号を無視し、入力シーケンス全体のそれぞれ先頭と末尾だけにマッチします。MULTILINE
モードがアクティブになると、^は入力の先頭、および入力の末尾を除くすべての行末記号の後にマッチします。MULTILINE
モードの場合、$は行末記号の直前、または入力シーケンスの末尾にマッチします。
前方参照を行う正規表現グループには、左から右方向に左丸括弧を数えることによって、番号が付けられます。たとえば、表現((A)(B(C)))は、次の4つのグループに分類されます。
1 ((A)(B(C))) 2 (A) 3 (B(C)) 4 (C)
グループ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(tm)言語仕様」のセクション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}はマッチしません。
書体、ブロック、カテゴリ、およびバイナリ・プロパティは、文字クラスの内部および外部のどちらにも使用できます。
書体は、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
によってサポートされるバイナリ・プロパティは次のとおりです
次の定義済の文字クラスとPOSIX文字クラスは、UNICODE_CHARACTER_CLASS
フラグが指定されている場合、Unicode正規表現の付録C: 互換性プロパティの勧告に適合しています。
クラス | マッチ |
---|---|
\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}\p{IsJoin_Control}] |
\W | 非単語文字: [^\w] |
Pattern
エンジンは、Perl 5と同じく、順序付けされた代替に対する従来のNFAベースのマッチングを実行します。
このクラスでサポートされていないPerl構文
定義済みの文字クラス(Unicode文字)
\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フラグを使用する。この機能は、Matcher
クラスによって暗黙的に提供される。find
メソッドを繰返し呼び出すと、正規表現エンジンがリセットされないかぎり、最後のマッチが終了した場所からマッチ操作が再開する。
Perl では、表現の最上位に埋め込まれたフラグが表現全体に適用される。このクラスの埋込みフラグは、埋め込まれた場所にかかわらず、その箇所でのみ有効になる。フラグがグループ内に埋め込まれている場合は、Perlと同様にグループの最後で復元される。
正規表現構文の動作の詳細については、『Mastering Regular Expressions, 3rd Edition』(Jeffrey E. F. Friedl著、O'Reilly and Associates、2006年)を参照してください。
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ライン・モードを有効にします。
|
修飾子と型 | メソッドと説明 |
---|---|
Predicate<String> |
asPredicate()
文字列とマッチするために使用できるプレディケートを作成します。
|
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)
このパターンのマッチに基づいて、指定された入力シーケンスを分割します。
|
Stream<String> |
splitAsStream(CharSequence input)
このパターンのマッチに基づいて、指定された入力シーケンスからストリームを作成します。
|
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
- 分割される文字シーケンスpublic static String quote(String s)
String
のリテラル・パターンString
を返します。
このメソッドは、リテラル・パターンであるかのように文字列s
にマッチするPattern
の作成に使用可能なString
を生成します。
s
- リテラル化する文字列public Predicate<String> asPredicate()
public Stream<String> splitAsStream(CharSequence input)
このメソッドから返されるストリームは、入力シーケンスの各部分文字列で構成されます。これらの部分文字列は、このパターンとマッチする別の部分シーケンスによって終了した文字列か、入力シーケンスの末尾によって終了した文字列です。ストリーム内の部分文字列は、入力内で発生した順番に並んでいます。末尾の空の文字列は破棄され、ストリーム内で検出されません。
このパターンが入力の部分シーケンスにマッチしない場合、結果として得られるストリームは 1 つの要素、つまり文字列形式の入力シーケンスだけで構成されます。
入力シーケンスの先頭に、正の幅のマッチがある場合、ストリームの先頭に、空の先頭部分文字列が含まれます。先頭のゼロの幅の一致では、そのような空の先頭の部分文字列は生成されません。
入力シーケンスが可変である場合、端末のストリーム操作の実行時に一定に保たれる必要があります。そうでないと、端末のストリーム操作の結果が不定になります。
input
- 分割される文字シーケンスsplit(CharSequence)
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.