- java.lang.Object
-
- java.util.regex.Pattern
-
- すべての実装されたインタフェース:
Serializable
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回呼び出すだけで、表現がコンパイルされ、入力シーケンスとのマッチが行われます。 次の文
ただし、マッチを繰り返す場合は、コンパイル済みのパターンを再利用できないため、効率が低下します。boolean b = Pattern.matches("a*b", "aaaaab");
このクラスのインスタンスは不変であるため、複数のスレッドで並行して使用できます。
Matcher
クラスのインスタンスは、そのような用途に安全に使用できません。正規表現構文のサマリー
構文 マッチ 文字 x 文字x \\
バックスラッシュ文字 \0
n8進値 0
nを持つ文字(0<=
n<=
7)\0
nn8進値 0
nnを持つ文字(0<=
n<=
7)\0
mnn8進値 0
mnnを持つ文字(0<=
m<=
3, 0<=
n<=
7)\x
hh16進値 0x
hhを持つ文字\u
hhhh16進値 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
xxに対応する制御文字 文字クラス [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}
句読文字: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
の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
単語境界 \b{g}
Unicode拡張書記素クラスタ境界 \B
非単語境界 \A
入力の先頭 \G
前回のマッチの末尾 \Z
最後の行末記号がある場合は、それを除く入力の末尾 \z
入力の末尾 改行マッチャ \R
すべてのUnicode改行シーケンスは、 \u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
に等しいUnicode拡張書記素マッチャ \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 |
YXまたはY (
X)
X、キャプチャリング・グループとして 後方参照 \
nマッチしたn番目のキャプチャリング・グループ \
k<name>「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 リテラル・エスケープ \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
モードの場合、$
は行末記号の直前、または入力シーケンスの末尾にマッチします。グループとキャプチャリング
グループ番号
キャプチャリング・グループには、左から右方向に左丸括弧を数えることによって、番号が付けられます。 たとえば、表現
((A)(B(C)))
は、次の4つのグループに分類されます。-
((A)(B(C)))
-
(A)
-
(B(C))
-
(C)
グループ0は、常に表現全体を表します。
キャプチャリング・グループがこのように分類されてから、入力シーケンスの各部分シーケンスがこれらのグループとマッチされ、マッチするたびに部分シーケンスが保存されます。 キャプチャされた部分シークエンスは、後方参照で、表現内であとで使用できます。また、マッチ操作が完了したら、マッチャから取り出すこともできます。
グループ名
キャプチャリング・グループには「名前」を割り当てることもでき(
名前付きのキャプチャリング・グループ
)、あとで「名前」によって後方参照できます。 グループ名は、次の文字で構成されます。 最初の文字は英字
である必要があります。- 大文字の
'A'
-'Z'
('\u0041'
-'\u005a'
)、 - 小文字の
'a'
-'z'
('\u0061'
-'\u007a'
)、 - 数字の
'0'
-'9'
('\u0030'
-'\u0039'
)、
名前付きキャプチャリング・グループ
も、グループ番号で説明するように番号付けされます。グループに関連付けられたキャプチャされた入力は常に、グループが最後に一致した部分列です。 数量子によりグループが2回目に評価される場合、前にキャプチャされた値がある場合は、2回目の評価が失敗した場合、その値が保持されます。 たとえば、文字列「
aba
」を表現(a(b)?)+
とマッチした場合は、グループ2に設定された「b
」が保持されます。 キャプチャされたすべての入力は、各マッチの開始時に破棄されます。(?
で始まるグループは、純粋な非キャプチャリング・グループで、テキストをキャプチャせず、グループ全体または名前付きのキャプチャリング・グループにカウントされません。Unicodeサポート
このクラスは、『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文字は、例えば補助文字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
構文で記述します。入力にプロパティ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
によってサポートされるバイナリ・プロパティは次のとおりです- Alphabetic
- Ideographic
- Letter
- Lowercase
- Uppercase
- Titlecase
- Punctuation
- Control
- White_Space
- Digit
- Hex_Digit
- Join_Control
- Noncharacter_Code_Point
- Assigned
次の定義済の文字クラスと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]
Perl 5との比較
Pattern
エンジンは、Perl 5と同じく、順序付けされた代替に対する従来のNFAベースのマッチングを実行します。このクラスでサポートされていないPerl構文
後方参照構文、n番目のキャプチャリング・グループの場合
\g{
n}
、名前付きのキャプチャリング・グループの場合\g{
名前}
。条件付き構文
(?(
条件)
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年)を参照してください。
- 導入されたバージョン:
- 1.4
- 関連項目:
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メソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 Predicate<String>
asMatchPredicate()
このパターンが指定された入力文字列と一致するかどうかをテストする述語を作成します。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()
このパターンの文字列表現を返します。
-
-
-
フィールドの詳細
-
UNIX_LINES
public static final int UNIX_LINES
Unixライン・モードを有効にします。このモードでは、「
\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 DOTALL
DOTALLモードを有効にします。DOTALLモードでは、表現
.
は行末記号を含む任意の文字にマッチします。 デフォルトでは、この表現は行末記号にマッチしません。DOTALLモードは、埋込みフラグ表現
(?s)
を使用して有効にすることもできます。 (s
は「single-line (単一行)」モードのニーモニック。Perlではこう呼ばれている。)- 関連項目:
- 定数フィールド値
-
UNICODE_CASE
public static final int UNICODE_CASE
Unicodeに準拠した大文字と小文字を区別しないマッチングを有効にします。このフラグと
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 Technical Standard#18: Unicode Regular Expression」の「Annex C: Compatibility Properties」に適合しています。
UNICODE_CHARACTER_CLASSライン・モードは、埋込みフラグ表現
(?U)
使用して有効にすることもできます。フラグはUNICODE_CASEを意味しています。つまり、Unicodeに準拠した大文字と小文字を区別しないマッチングを有効にします。
このフラグを指定すると、パフォーマンスが低下する場合があります。
- 導入されたバージョン:
- 1.7
- 関連項目:
- 定数フィールド値
-
-
メソッドの詳細
-
compile
public static Pattern compile(String regex)
指定された正規表現をパターンにコンパイルします。- パラメータ:
regex
- コンパイルされる表現- 戻り値:
- パターンにコンパイルする指定された正規表現
- 例外:
PatternSyntaxException
- 表現の構文が無効である場合
-
compile
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
- 表現の構文が無効である場合
-
pattern
public String pattern()
このパターンのコンパイル元の正規表現を返します。- 戻り値:
- このパターンのコンパイル元
-
toString
public String toString()
このパターンの文字列表現を返します。 これは、このパターンのコンパイル元の正規表現です。
-
matcher
public Matcher matcher(CharSequence input)
指定された入力とこのパターンをマッチするマッチャを作成します。- パラメータ:
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
パラメータは、このパターンの適用回数を制御するため、結果となる配列の長さに影響を及ぼします。「制限」が正の場合、パターンはほとんどの「制限」に適用されます。-1回は配列の長さが「制限」を超えることはなく、最後に一致したデリミタを超えるすべての入力が配列の最後のエントリに含まれます。
「制限」がゼロの場合、パターンは可能なかぎり何度も適用され、配列には任意の長さを指定でき、後続の空の文字列は破棄されます。
「制限」が負の場合、パターンは可能なかぎり適用され、配列の長さは任意になります。
たとえば、入力シーケンス「
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
- 結果のしきい値(上記のとおり)- 戻り値:
- このパターンのマッチの両端で入力を分割することによって計算された文字列の配列
-
split
public String[] split(CharSequence input)
このパターンのマッチに基づいて、指定された入力シーケンスを分割します。このメソッドの動作は、2つの引数を取る
split
メソッドを、指定された入力シーケンスとゼロの制限引数を指定して呼び出した場合と同じになります。 つまり、結果として得られる配列には後続の空の文字列は含まれません。たとえば、入力シーケンス「
boo:and:foo
」は、これらの表現によって次のように分割されます。正規表現 結果 : { "boo", "and", "foo" }
o { "b", "", ":and:f" }
- パラメータ:
input
- 分割される文字シーケンス- 戻り値:
- このパターンのマッチの両端で入力を分割することによって計算された文字列の配列
-
quote
public static String quote(String s)
指定されたString
のリテラル・パターンString
を返します。このメソッドは、リテラル・パターンであるかのように文字列
入力シーケンス内のメタキャラクタまたはエスケープ・シーケンスに、特別な意味はありません。s
にマッチするPattern
の作成に使用可能なString
を生成します。- パラメータ:
s
- リテラル化する文字列- 戻り値:
- リテラル文字列置換
- 導入されたバージョン:
- 1.5
-
asPredicate
public Predicate<String> asPredicate()
指定された入力文字列でこのパターンが検出されたかどうかをテストする述語を作成します。- APIのノート:
- このメソッドは、入力シーケンスからマッチャを作成した場合のように動作する述語を作成し、次のようなフォームの述語のように
find
を呼び出します。s -> matcher(s).find();
- 戻り値:
- 文字列のサブ・シーケンスの一致を検索するために使用できる述語。
- 導入されたバージョン:
- 1.8
- 関連項目:
Matcher.find()
-
asMatchPredicate
public Predicate<String> asMatchPredicate()
このパターンが指定された入力文字列と一致するかどうかをテストする述語を作成します。- APIのノート:
- このメソッドは、入力シーケンスからマッチャを作成した場合のように動作する述語を作成し、次のようなフォームの述語のように
matches
を呼び出します。s -> matcher(s).matches();
- 戻り値:
- 入力文字列をこのパターンと照合するために使用できる述語。
- 導入されたバージョン:
- 11
- 関連項目:
Matcher.matches()
-
splitAsStream
public Stream<String> splitAsStream(CharSequence input)
このパターンのマッチに基づいて、指定された入力シーケンスからストリームを作成します。このメソッドから返されるストリームは、入力シーケンスの各部分文字列で構成されます。これらの部分文字列は、このパターンとマッチする別の部分シーケンスによって終了した文字列か、入力シーケンスの末尾によって終了した文字列です。 ストリーム内の部分文字列は、入力内で発生した順番に並んでいます。 末尾の空の文字列は破棄され、ストリーム内で検出されません。
このパターンが入力の部分シーケンスにマッチしない場合、結果として得られるストリームは 1 つの要素、つまり文字列形式の入力シーケンスだけで構成されます。
入力シーケンスの先頭に、正の幅のマッチがある場合、ストリームの先頭に、空の先頭部分文字列が含まれます。 先頭のゼロの幅の一致では、そのような空の先頭の部分文字列は生成されません。
入力シーケンスが可変である場合、端末のストリーム操作の実行時に一定に保たれる必要があります。 そうでないと、端末のストリーム操作の結果が不定になります。
- パラメータ:
input
- 分割される文字シーケンス- 戻り値:
- このパターンのマッチの両端で入力を分割することによって計算された文字列のストリーム
- 導入されたバージョン:
- 1.8
- 関連項目:
split(CharSequence)
-
-