- すべての実装されたインタフェース:
Serializable
正規表現は、文字列として指定し、このクラスのインスタンスにコンパイルする必要があります。 結果のパターンを使用して、任意の文字シーケンスを正規表現とマッチできるMatcher
オブジェクトを作成できます。 マッチを実行したときの状態はすべてマッチャに格納されます。このため、複数のマッチャが同じパターンを共有できます。
標準的な呼出しシーケンスは、次のようになります。
Pattern p = Pattern.compile
("a*b"); Matcher m = p.matcher
("aaaaab"); boolean b = m.matches
();
このクラスに定義したmatches
メソッドを使用すれば、正規表現は一度使用するだけで済みます。 このメソッドを1回呼び出すだけで、表現がコンパイルされ、入力シーケンスとのマッチが行われます。 次の文
ただし、マッチを繰り返す場合は、コンパイル済みのパターンを再利用できないため、効率が低下します。boolean b = Pattern.matches("a*b", "aaaaab");
このクラスのインスタンスは不変であるため、複数のスレッドで並行して使用できます。 Matcher
クラスのインスタンスは、そのような用途に安全に使用できません。
正規表現構文のサマリー
コンストラクト | マッチ |
---|---|
文字 | |
x | 文字x |
\\ |
バックスラッシュ文字 |
\0 n |
8進数値0 nの文字 (0 <= n <= 7) |
\0 nn |
8進数値0 nnの文字 (0 <= n <= 7) |
\0 mnn |
8進数値0 mnnの文字 (0 <= m <= 3, 0 <= n <= 7) |
\x hh |
16進値0x hhの文字 |
\u hhhh |
16進値0x hhhhの文字 |
\x {h...h} |
16進値0x h...hの文字 (Character.MIN_CODE_POINT <= 0x h...h <= Character.MAX_CODE_POINT ) |
\N{ name} |
Unicode文字の名前が'name'の文字 |
\t |
タブ文字('\u0009' ) |
\n |
改行(ライン・フィード)文字('\u000A' ) |
\r |
キャリッジ・リターン文字 ('\u000D' ) |
\f |
フォーム・フィード文字('\u000C' ) |
\a |
アラート(ベル)文字('\u0007' ) |
\e |
エスケープ文字('\u001B' ) |
\c x |
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 |
数字: * UNICODE_CHARACTER_CLASSが設定されていない場合は[0-9] 。 「Unicodeサポート」を参照してください。 |
\D |
数字以外: [^0-9] |
\h |
水平方向の空白文字: [ \t\xA0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000] |
\H |
水平以外の空白文字: [^\h] |
\s |
空白文字: UNICODE_CHARACTER_CLASSが設定されていない場合は[ \t\n\x0B\f\r] 。 「Unicodeサポート」を参照してください。 |
\S |
空白以外の文字: [^\s] |
\v |
垂直方向の空白文字: [\n\x0B\f\r\x85\u2028\u2029]
|
\V |
垂直方向以外の空白文字: [^\v] |
\w |
単語文字: UNICODE_CHARACTER_CLASSが設定されていない場合は[a-zA-Z_0-9] 。 「Unicodeサポート」を参照してください。 |
\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} |
句読文字: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ の1つ |
\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 |
単語境界 : (?:(?<=\w)(?=\W)|(?<=\W)(?=\w)) (単語以外の文字が単語文字と接する場所) |
\b{g} |
Unicode拡張書記素クラスタ境界 |
\B |
単語以外の境界: [^\b] |
\A |
入力の先頭 |
\G |
前回のマッチの末尾 |
\Z |
最後の行末記号がある場合は、それを除く入力の末尾 |
\z |
入力の末尾 |
改行マッチャ | |
\R |
Unicode改行シーケンス、\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029] と同等です |
Unicode Extended Grapheme matcher | |
\X |
任意のUnicode拡張書記素クラスタ |
最長一致数量子 | |
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> |
「name」がマッチした名前付きキャプチャリング・グループ |
引用 | |
\ |
なし。だが、次の文字を引用する |
\Q |
なし、\E までのすべての文字を\E まで引用します |
\E |
なし、\Q によって開始された引用を終了します |
特殊な構文(名前付きキャプチャリングや非キャプチャリング) | |
(?<name> X) |
X、名前付きキャプチャリング・グループとして |
(?: X) |
X、非キャプチャリング・グループとして |
(?idmsuxU-idmsuxU) |
なし。だが、マッチ・フラグi d m s u x Uのオン - オフを切り替える |
(?idmsuxU-idmsuxU: X) |
X、非キャプチャリング・グループとして、特定のフラグi d m s u x Uのオン - オフ |
(?= X) |
X、幅ゼロの肯定先読み |
(?! X) |
X、幅ゼロの否定先読み |
(?<= X) |
X、幅ゼロの肯定後読み |
(?<! X) |
X、幅ゼロの否定後読み |
(?> X) |
X、独立した、非キャプチャリング・グループとして |
バックスラッシュ、エスケープ、および引用
バックスラッシュ文字('\'
)は、前述の表に定義されているエスケープされた構造体を導入したり、エスケープされていない構造体として解釈される文字を引用符で囲むために使用します。 したがって、式\\
は1つのバックスラッシュに一致し、\{
は左中カッコに一致します。
英字の前にバックスラッシュを使用したときに、その英字がエスケープ構文でない場合は、エラーになります。これらのパターンは、正規表現言語の今後の拡張に予約されています。 英字以外の文字の場合は、その文字が非エスケープ構文に含まれるかどうかにかかわらず、バックスラッシュを指定できます。
Javaソース・コードの文字列リテラル内のバックスラッシュは、「Java言語仕様」で必要であると解釈されます。Unicodeエスケープ(セクション3.3)またはその他の文字エスケープ(セクション3.10.6)として解釈されます。 したがって、Javaバイトコード・コンパイラによる解釈から保護するために、正規表現を表す文字列リテラルでバックスラッシュを二重にする必要があります。 たとえば、文字列リテラル"\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文字の文字シーケンスです。 次の文字が行末記号として認識されます。
- 改行(ライン・フィード)文字(
'\n'
)、 - 改行文字がすぐに続くキャリッジ・リターン文字 (
"\r\n"
)、 - スタンドアロンのキャリッジ・リターン文字 (
'\r'
)、 - 次行文字(
'\u0085'
)、 - 行区切り文字(
'\u2028'
)、または - 段落区切り文字(
'\u2029'
)。
UNIX_LINES
モードが有効な場合は、改行文字だけが行末記号として認識されます。
正規表現.
は、DOTALL
フラグが指定されていないかぎり、行の終了文字以外の任意の文字と一致します。
MULTILINE
モードがアクティブ化されていない場合、正規表現^
は行終了文字を無視し、入力シーケンス全体の先頭でのみ一致します。 正規表現$
は、入力シーケンス全体の最後に一致しますが、それに続く他の入力文字がない場合は、最後の行の終了文字の直前にも一致します。 その他の行の終端文字は無視されます。その後に他の入力文字が続く場合、最後の終端文字も含まれます。
MULTILINE
モードがアクティブになっている場合、^
は、入力の最初と、入力の最後以外のすべての行終了文字の後で一致します。 MULTILINE
モードの場合、$
は、行終了文字の直前または入力シーケンスの終端に一致します。
グループとキャプチャリング
グループ番号
キャプチャリング・グループには、左から右方向に左丸括弧を数えることによって、番号が付けられます。 たとえば、式((A)(B(C)))
には、次の4つのグループがあります:
-
((A)(B(C)))
-
(A)
-
(B(C))
-
(C)
グループ0は、常に表現全体を表します。
キャプチャリング・グループがこのように分類されてから、入力シーケンスの各部分シーケンスがこれらのグループとマッチされ、マッチするたびに部分シーケンスが保存されます。 キャプチャされた部分シークエンスは、後方参照で、表現内であとで使用できます。また、マッチ操作が完了したら、マッチャから取り出すこともできます。
グループ名
キャプチャリング・グループには、"name"、named-capturing group
、を割り当てることができ、後で"name"によって逆参照されます。 グループ名は、次の文字で構成されます。 最初の文字はletter
である必要があります。
- 大文字
'A'
から'Z'
('\u0041'
から'\u005a'
)、 - 小文字
'a'
から'z'
('\u0061'
から'\u007a'
)、 - 数字
'0'
から'9'
('\u0030'
から'\u0039'
)
named-capturing group
には、引き続き「グループ番号」で説明されているように番号が付けられます。
グループに関連付けられたキャプチャされた入力は常に、グループが最後に一致した部分列です。 数量子によりグループが2回目に評価される場合、前にキャプチャされた値がある場合は、2回目の評価が失敗した場合、その値が保持されます。 文字列"aba"
を式(a(b)?)+
とマッチします。たとえば、2つのグループを"b"
に設定したままにします。 キャプチャされたすべての入力は、各マッチの開始時に破棄されます。
(?
で始まるグループは、純粋な「非キャプチャリング」グループで、テキストはキャプチャされず、グループ合計にはカウントされません。または、「名前付きキャプチャリング」グループです。
Unicodeサポート
このクラスは、「Unicodeテクニカル標準 #18: Unicode正規表現」のレベル1と、RL 2.1標準等価およびRL 2.2拡張書記素クラスタに準拠しています。
Javaソース・コードの\u2014
などの「Unicodeエスケープ・シーケンス」は、「Java言語仕様」の3.3項で説明されているように処理されます。 これらのエスケープ・シーケンスは、正規表現パーサーによって直接実装されるため、ファイルまたはキーボードから読み込んだ表現の中でもUnicodeエスケープを使用できます。 したがって、文字列"\u2014"
および"\\u2014"
は等しくないが、同じパターンにコンパイルされ、16進数値0x2014
の文字と一致します。
Unicode文字は、例えば補助文字U+2011Fはなくサロゲート・ペア\uD840
\uDD1F
の二つの連続のUnicodeエスケープ・シーケンス、\x{2011F}
として指定することができ、構築物\x{...}
に記載の直接ように、その「16進表記法」 (16進コード・ポイント値)を用いて表現することができます。
「Unicode文字の名前」は、名前付き文字構成\N{
...}
でサポートされます。たとえば、\N{WHITE SMILING FACE}
は文字\u263A
を指定します。 このクラスでサポートされている文字名は、Character.codePointOf(name)
と一致する有効なUnicode文字名です。
「Unicode拡張書記素クラスタ」は、書記素クラスタマッチャ\X
と対応する境界マッチャ\b{g}
によってサポートされています。
Unicodeスクリプト、ブロック、カテゴリおよびバイナリ・プロパティは、Perlと同様に、\p
および\P
構造で記述されます。\p{
prop}
は、入力に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
によってサポートされるバイナリ・プロパティは次のとおりです
- Alphabetic
- Ideographic
- Letter
- Lowercase
- Uppercase
- Titlecase
- Punctuation
- Control
- White_Space
- Digit
- Hex_Digit
- Join_Control
- Noncharacter_Code_Point
- Assigned
- Emoji
- Emoji_Presentation
- Emoji_Modifier
- Emoji_Modifier_Base
- Emoji_Component
- Extended_Pictographic
次の「事前定義済の文字クラス」および「POSIX文字クラス」は、UNICODE_CHARACTER_CLASS
フラグが指定されている場合、「Unicodeテクニカル標準 #18: Unicode正規表現」の「Annex 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] |
Perl 5との比較
Pattern
エンジンは、Perl 5と同じく、順序付けされた代替に対する従来のNFAベースのマッチングを実行します。
このクラスでサポートされていないPerl構文
後方参照コンストラクト、n番目のキャプチャリング・グループの場合は
\g{
n}
、名前付きキャプチャリング・グループの場合は\g{
name}
。条件付きコンストラクト
(?(
condition)
X)
および(?(
condition)
X|
Y)
、埋込みコード・コンストラクト
(?{
code})
および(??{
code})
、埋込みコメント構文
(?#comment)
、および前処理操作
\l
\u
、\L
および\U
。
このクラスでサポートされているが、Perlでサポートされていない構文。
文字クラスの結合と交差(前述)。
Perlとの大きな相違点
Perlでは、
\1
から\9
までは常に後方参照として解釈されます。9
より大きいバックスラッシュ・エスケープされた数値は、少なくとも多くのサブ表現が存在する場合は後方参照として扱われ、存在しない場合は、可能な場合は8進エスケープとして解釈されます。 このクラスでは、8 進数のエスケープは常にゼロで始まります。 このクラスでは、\1
から\9
までは常に後方参照として解釈され、正規表現のその時点で多くの部分正規表現が存在する場合は、それより大きい数値が後方参照として受け入れられます。それ以外の場合は、数値が既存のグループ数以下または1桁になるまで、パーサーは数値をドロップします。Perlでは、最後のマッチが終了した場所からマッチの再開を要求するときは、
g
フラグを使用します。 この機能は、Matcher
クラスによって暗黙的に提供されます。find
メソッドを繰返し呼び出すと、マッチャがリセットされないかぎり、最後のマッチが終了した場所からマッチ操作が再開します。Perl では、表現の最上位に埋め込まれたフラグが表現全体に適用されます。 このクラスの埋込みフラグは、埋め込まれた場所にかかわらず、その箇所でのみ有効になります。フラグがグループ内に埋め込まれている場合は、Perlと同様にグループの最後で復元されます。
Perlのフリースペーシング・モード (このクラスではコメント・モードと呼ばれる)は、正規表現の
(?x)
で (または、式のコンパイル時にCOMMENTS
フラグによって)指定されますが、文字クラス内の空白を無視しません。 このクラスでは、コメント・モードの場合に正規表現の一部として考慮されるように、文字クラス内の空白をエスケープする必要があります。
正規表現構造の動作の詳細は、「正規表現の習得, 3rd Edition、Jeffrey E. F. Friedl、O 'Reilly and Associates、2006年」を参照してください。
- 導入されたバージョン:
- 1.4
- 外部仕様
- 関連項目:
-
フィールドのサマリー
修飾子と型フィールド説明static final int
正規等価を有効にします。static final int
大文字と小文字を区別しないマッチングを有効にします。static final int
パターン内で空白とコメントを使用できるようにします。static final int
DOTALLモードを有効にします。static final int
パターンのリテラル構文解析を有効にします。static final int
複数行モードを有効にします。static final int
Unicodeに準拠した大文字と小文字を区別しないマッチングを有効にします。static final int
定義済みの文字クラスとPOSIX文字クラスのUnicodeバージョンを使用可能にします。static final int
Unixライン・モードを有効にします。 -
メソッドのサマリー
修飾子と型メソッド説明このパターンが指定された入力文字列と一致するかどうかをテストする述語を作成します。指定された入力文字列でこのパターンが検出されたかどうかをテストする述語を作成します。static Pattern
指定された正規表現をパターンにコンパイルします。static Pattern
指定されたフラグを使用して、指定された正規表現をパターンにコンパイルします。int
flags()
このパターンのマッチ・フラグを返します。matcher
(CharSequence input) 指定された入力とこのパターンをマッチするマッチャを作成します。static boolean
matches
(String regex, CharSequence input) 指定された正規表現をコンパイルして、指定された入力とその正規表現をマッチします。キャプチャリング・グループ名からグループ番号への変更不可能なマップを返します。pattern()
このパターンのコンパイル元の正規表現を返します。static String
指定されたString
のリテラル・パターンString
を返します。String[]
split
(CharSequence input) このパターンのマッチに基づいて、指定された入力シーケンスを分割します。String[]
split
(CharSequence input, int limit) このパターンのマッチに基づいて、指定された入力シーケンスを分割します。splitAsStream
(CharSequence input) このパターンのマッチに基づいて、指定された入力シーケンスからストリームを作成します。String[]
splitWithDelimiters
(CharSequence input, int limit) このパターンの一致を囲む入力シーケンスを分割し、文字列と一致するデリミタの両方を返します。toString()
このパターンの文字列表現を返します。
-
フィールド詳細
-
UNIX_LINES
public static final int UNIX_LINESUnixライン・モードを有効にします。このモードでは、
.
、^
および$
の動作で'\n'
行の終了文字のみが認識されます。Unixライン・モードは、埋め込みフラグ式
(?d)
を使用して有効にすることもできます。- 関連項目:
-
CASE_INSENSITIVE
public static final int CASE_INSENSITIVE大文字と小文字を区別しないマッチングを有効にします。デフォルトの大文字と小文字を区別しないマッチングでは、US-ASCII文字セットの文字だけがマッチします。 Unicodeに準拠した大文字と小文字を区別しないマッチングを有効にするには、
UNICODE_CASE
フラグをこのフラグと組み合わせて指定します。大/小文字を区別しないマッチングは、埋込みフラグ式
(?i)
を使用して有効にすることもできます。このフラグを指定すると、パフォーマンスがわずかに低下する場合があります。
- 関連項目:
-
COMMENTS
public static final int COMMENTSパターン内で空白とコメントを使用できるようにします。このモードでは、空白は無視され、
#
で始まる埋め込まれたコメントは、行の終わりまで無視されます。 コメント・モードでは、パターン文字列に含まれる文字クラス内の空白は無視されます。 このような空白は、重要と見なされるためにはエスケープする必要があります。コメント・モードは、埋込みフラグ式
(?x)
を使用して有効にすることもできます。- 関連項目:
-
MULTILINE
public static final int MULTILINE複数行モードを有効にします。複数行モードでは、式
^
および$
は、それぞれ行の終了文字または入力順序の終了文字の直後または直前で一致します。 デフォルトでは、これらの表現は入力シーケンス全体の先頭と末尾にだけマッチします。複数行モードは、埋込みフラグ式
(?m)
を使用して有効にすることもできます。- 関連項目:
-
LITERAL
public static final int LITERALパターンのリテラル構文解析を有効にします。このフラグが指定されている場合、パターンを指定する入力文字列は、リテラル文字のシーケンスとして処理されます。 入力シーケンス内のメタキャラクタまたはエスケープ・シーケンスに、特別な意味はありません。
CASE_INSENSITIVEおよびUNICODE_CASEフラグをこのフラグとともに使用すると、マッチングに対する影響が維持されます。 ほかのフラグは不要になります。
リテラル構文解析を有効にするための埋込みフラグ文字はありません。
- 導入されたバージョン:
- 1.5
- 関連項目:
-
DOTALL
public static final int DOTALLDOTALLモードを有効にします。dotallモードでは、式
.
は、行の終了文字を含む任意の文字に一致します。 デフォルトでは、この表現は行末記号にマッチしません。Dotallモードは、埋込みフラグ式
(?s)
を使用して有効にすることもできます。 (s
は、Perlで呼び出される"single-line"モードのニーモニックです。)- 関連項目:
-
UNICODE_CASE
public static final int UNICODE_CASEUnicodeに準拠した大文字と小文字を区別しないマッチングを有効にします。このフラグと
CASE_INSENSITIVE
フラグを同時に指定した場合は、Unicode標準に準拠した大文字と小文字を区別しないマッチングが行われます。 デフォルトの大文字と小文字を区別しないマッチングでは、US-ASCII文字セットの文字だけがマッチします。Unicode対応の場合の折りたたみは、埋込みフラグ式
(?u)
を使用して有効にすることもできます。このフラグを指定すると、パフォーマンスが低下する場合があります。
- 関連項目:
-
CANON_EQ
public static final int CANON_EQ正規等価を有効にします。このフラグを指定したときは、2つの文字の完全な正規分解がマッチした場合に限り、それらの文字がマッチするとみなされます。 たとえば、式
"a\u030A"
は、このフラグが指定されている場合、文字列"\u00E5"
に一致します。 デフォルトのマッチングでは、正規等価が考慮されません。正規等価を有効にするための埋込みフラグ文字はありません。
このフラグを指定すると、パフォーマンスが低下し、メモリー不足の中程度のリスクが生じる可能性があります。
- 関連項目:
-
UNICODE_CHARACTER_CLASS
public static final int UNICODE_CHARACTER_CLASS定義済みの文字クラスとPOSIX文字クラスのUnicodeバージョンを使用可能にします。このフラグが指定されている場合、(US-ASCIIのみ) 「事前定義済の文字クラス」および「POSIX文字クラス」は「Unicodeテクニカル標準 #18: Unicode正規表現」 「Annex C: 互換性プロパティ」に準拠しています。
UNICODE_CHARACTER_CLASSモードは、埋込みフラグ式
(?U)
を使用して有効にすることもできます。フラグはUNICODE_CASEを意味しています。つまり、Unicodeに準拠した大文字と小文字を区別しないマッチングを有効にします。
このフラグを指定すると、パフォーマンスが低下する場合があります。
- 導入されたバージョン:
- 1.7
- 外部仕様
- 関連項目:
-
-
メソッドの詳細
-
compile
指定された正規表現をパターンにコンパイルします。- パラメータ:
regex
- コンパイルされる表現- 戻り値:
- パターンにコンパイルする指定された正規表現
- 例外:
PatternSyntaxException
- 表現の構文が無効である場合
-
compile
指定されたフラグを使用して、指定された正規表現をパターンにコンパイルします。フラグに
CANON_EQ
を設定すると、メモリー不足の中程度のリスクが生じる可能性があります。- 実装上のノート:
CANON_EQ
が指定され、任意の文字の結合マークの数が大きすぎる場合、OutOfMemoryError
がスローされます。- パラメータ:
regex
- コンパイルされる表現flags
- マッチ・フラグ。CASE_INSENSITIVE
、MULTILINE
、DOTALL
、UNICODE_CASE
、CANON_EQ
,UNIX_LINES
、LITERAL
、UNICODE_CHARACTER_CLASS
、およびCOMMENTS
を含めることができるビット・マスク- 戻り値:
- 指定されたフラグを使用して、パターンにコンパイルする指定された正規表現
- 例外:
IllegalArgumentException
- 定義された一致フラグに対応するビット値以外のビット値がflags
に設定されている場合PatternSyntaxException
- 表現の構文が無効である場合
-
pattern
-
toString
-
matcher
public Matcher matcher(CharSequence input) 指定された入力とこのパターンをマッチするマッチャを作成します。- 実装上のノート:
Pattern
が直列化復元されると、コンパイルは、このメソッドの直接または間接的な起動まで遅延されます。 したがって、直列化復元されたパターンのフラグの間にCANON_EQ
があり、任意の文字の結合マークの数が大きすぎる場合、compile(String, int)
のようにOutOfMemoryError
がスローされます。- パラメータ:
input
- マッチされる文字シーケンス- 戻り値:
- このパターンの新しいマッチャ
-
flags
public int flags()このパターンのマッチ・フラグを返します。- 戻り値:
- このパターンがコンパイルされたときに指定されたマッチ・フラグ
-
matches
public static boolean matches(String regex, CharSequence input) 指定された正規表現をコンパイルして、指定された入力とその正規表現をマッチします。このメソッドを次の形式で呼び出すと、上記の動作が行われます。
上記のメソッドは、次の表現と同様に動作します。Pattern.matches(regex, input);
Pattern.compile(regex).matcher(input).matches()
パターンを繰返し使用する場合は、そのパターンをコンパイルして再利用した方が、毎回このメソッドを呼び出すよりも効率的です。
- パラメータ:
regex
- コンパイルされる表現input
- マッチされる文字シーケンス- 戻り値:
- 入力で正規表現がマッチしているかどうか
- 例外:
PatternSyntaxException
- 表現の構文が無効である場合
-
split
public String[] split(CharSequence input, int limit) このパターンのマッチに基づいて、指定された入力シーケンスを分割します。このメソッドから返される配列は、入力シーケンスの部分文字列で構成されます。これらの部分文字列は、このパターンとマッチする別の部分シーケンスによって分割された文字列か、入力シーケンスの終了によって分割された文字列です。 配列内の部分文字列は、入力シーケンス内で発生した順番に並んでいます。 このパターンが入力シーケンスの部分シーケンスにマッチしない場合、結果として得られる配列は 1 つの要素、つまり文字列形式の入力シーケンスだけで構成されます。
入力シーケンスの先頭に、正の幅のマッチがある場合、結果の配列の先頭に、空の先頭部分文字列が含まれます。 先頭のゼロの幅の一致では、そのような空の先頭の部分文字列は生成されません。
limit
パラメータは、このパターンの適用回数を制御するため、結果となる配列の長さに影響を及ぼします。limitが正の場合、パターンは最大limit-1回適用され、配列の長さがlimitを超えることはなく、最後に一致したデリミタを超えるすべての入力が配列の最後のエントリに含まれます。
limitがゼロの場合、パターンは可能なかぎり何度も適用され、配列には任意の長さを指定でき、後続の空の文字列は破棄されます。
limitが負の場合、パターンは可能なかぎり適用され、配列の長さは任意になります。
たとえば、入力
"boo:and:foo"
は、次のパラメータを使用して結果を生成します:正規表現 制限 結果 : 2 { "boo", "and:foo" }
5 { "boo", "and", "foo" }
-2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
-2 { "b", "", ":and:f", "", "" }
0 { "b", "", ":and:f" }
- パラメータ:
input
- 分割される文字シーケンスlimit
- 結果のしきい値(上記のとおり)- 戻り値:
- このパターンのマッチの両端で入力を分割することによって計算された文字列の配列
-
splitWithDelimiters
public String[] splitWithDelimiters(CharSequence input, int limit) このパターンの一致を囲む入力シーケンスを分割し、文字列と一致するデリミタの両方を返します。このメソッドから返される配列は、入力シーケンスの部分文字列で構成されます。これらの部分文字列は、このパターンとマッチする別の部分シーケンスによって分割された文字列か、入力シーケンスの終了によって分割された文字列です。 各部分文字列の直後に、このパターンに一致する部分列(デリミタ)が続き、最後の部分文字列を「除き」、その後に何も続いていません。 配列内の部分文字列と区切り文字は、入力での出現順序になります。 このパターンが入力シーケンスの部分シーケンスにマッチしない場合、結果として得られる配列は 1 つの要素、つまり文字列形式の入力シーケンスだけで構成されます。
入力シーケンスの先頭に、正の幅のマッチがある場合、結果の配列の先頭に、空の先頭部分文字列が含まれます。 最初にゼロ幅が一致しても、そのような空の先頭部分文字列や空の区切り文字は生成されません。
limit
パラメータは、このパターンの適用回数を制御するため、結果となる配列の長さに影響を及ぼします。- limitが正の場合、パターンは最大limit - 1回適用され、配列の長さは2×limit - 1よりも大きくならず、配列の最後のエントリには、最後に一致したデリミタを超えるすべての入力が含まれます。
- limitがゼロの場合、パターンは可能なかぎり何度も適用され、配列には任意の長さを指定でき、後続の空の文字列(部分文字列またはデリミタ)は破棄されます。
- limitが負の場合、パターンは可能なかぎり適用され、配列の長さは任意になります。
たとえば、入力
"boo:::and::foo"
は、次のパラメータを使用して結果を生成します:正規表現 制限 結果 :+ 2 { "boo", ":::", "and::foo" }
5 { "boo", ":::", "and", "::", "foo" }
-1 { "boo", ":::", "and", "::", "foo" }
o 5 { "b", "o", "", "o", ":::and::f", "o", "", "o", "" }
-1 { "b", "o", "", "o", ":::and::f", "o", "", "o", "" }
0 { "b", "o", "", "o", ":::and::f", "o", "", "o" }
- パラメータ:
input
- 分割される文字シーケンスlimit
- 結果のしきい値(上記のとおり)- 戻り値:
- このパターンの一致の前後に入力を分割して計算される文字列の配列、置換部分文字列および一致する区切り文字
- 導入されたバージョン:
- 21
-
split
public String[] split(CharSequence input) このパターンのマッチに基づいて、指定された入力シーケンスを分割します。このメソッドの動作は、2つの引数を取る
split
メソッドを、指定された入力シーケンスとゼロの制限引数を指定して呼び出した場合と同じになります。 つまり、結果として得られる配列には後続の空の文字列は含まれません。たとえば、入力
"boo:and:foo"
は、次の式で次の結果を生成します:正規表現 結果 : { "boo", "and", "foo" }
o { "b", "", ":and:f" }
- パラメータ:
input
- 分割される文字シーケンス- 戻り値:
- このパターンのマッチの両端で入力を分割することによって計算された文字列の配列
-
quote
-
namedGroups
-
asPredicate
-
asMatchPredicate
-
splitAsStream
public Stream<String> splitAsStream(CharSequence input) このパターンのマッチに基づいて、指定された入力シーケンスからストリームを作成します。このメソッドから返されるストリームは、入力シーケンスの各部分文字列で構成されます。これらの部分文字列は、このパターンとマッチする別の部分シーケンスによって終了した文字列か、入力シーケンスの末尾によって終了した文字列です。 ストリーム内の部分文字列は、入力内で発生した順番に並んでいます。 末尾の空の文字列は破棄され、ストリーム内で検出されません。
このパターンが入力の部分シーケンスにマッチしない場合、結果として得られるストリームは 1 つの要素、つまり文字列形式の入力シーケンスだけで構成されます。
入力シーケンスの先頭に、正の幅のマッチがある場合、ストリームの先頭に、空の先頭部分文字列が含まれます。 先頭のゼロの幅の一致では、そのような空の先頭の部分文字列は生成されません。
入力シーケンスが可変である場合、端末のストリーム操作の実行時に一定に保たれる必要があります。 そうしない場合、ストリーム終端操作の結果は保証されません。
- パラメータ:
input
- 分割される文字シーケンス- 戻り値:
- このパターンのマッチの両端で入力を分割することによって計算された文字列のストリーム
- 導入されたバージョン:
- 1.8
- 関連項目:
-