Javaラーニングノート-正規表現
10306 ワード
一定の規則に合致して、文字列に対して操作する1種の表現式は他の言語の中で、
正規表現はJavaでよく使われる3つの使い方がありますマッチング: を返します.カット: 置換: を取得できます.取得:文字列内の規則に合致するサブストリングを取り出す 正規表現をオブジェクトにカプセル化 正規オブジェクトと操作する文字列を関連付ける 関連付け後、正規マッチングエンジン を取得するルールに合致するサブストリングをエンジンで操作し、例えば を取り出す
この文字が正しいかどうかだけ知りたい場合は、一致 を使用します.既存の文字列を別の文字列にしたい場合は、 を置き換えます.文字列を複数の文字列にカスタマイズしたい.カット.取得ルール以外のサブストリング 需要に合った文字列のサブストリングを取得したい場合は、取得します.ルールに一致するサブストリングを取得 文字:
こうぞう
マッチ
`x`
文字x
`\\`
バックスラッシュ文字
`\0n`
8進数値0の文字n(0<=n<=7)
`\0nn`
8進数値0の文字nn(0<=n<=7)
`\0mnn`
8進数値0の文字mnn(0<=m<=3、0<=n<=7)
`\xhh`
16進数値0 xの文字hh
`\uhhhh`
16進数値0 xの文字hhh
`\t`
タブ(`'''09')
``
新しい行(改行)記号(`'''A')
`\r`
リターン記号(`'''D')
`\f`
改ページ(`'''C')
`\a`
アラーム(bell)記号(`'<07')
`\e`
エスケープ記号(`'1 B')
`\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]]`
mからp:`[a-lq-z]`(減算)ではなくaからz
事前定義文字クラス:
こうぞう
マッチ
`.`
任意の文字(行の終端と一致するか一致しないか)
`\d`
数字:`[0-9]`
`\D`
非数字:`[^0-9]`
`\s`
空白文字:`[tx 0 Bfr]`
`\S`
空白以外の文字:`[^s]`
`\w`
単語文字:`[a-zA-Z_0-9]`
`\W`
非単語文字:`[^w]`
POSIX文字類(US-ACSCIIのみ):
こうぞう
マッチ
`\p{Lower}`
小文字文字:`[a-z]`
`\p{Upper}`
大文字文字:`[A-Z]`
`\p{ASCII}`
すべてのASCII:`[x 00-x 7 F]`
`\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}x 20]`
`\p{Blank}`
スペースまたはタブ:`[t]`
`\p{Cntrl}`
制御文字:`[x 00-x 1 Fx 7 F]`
`\p{XDigit}`
16進数:`[0-9 a-fA-F]`
`\p{Space}`
空白文字:`[tx 0 Bfr]`
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{InGreek}`
Greekブロックの文字
`\p{Lu}`
大文字(単純カテゴリ)
`\p{Sc}`
通貨記号
`\P{InGreek}`
すべての文字、Greekブロックから除外(否定)
`[\p{L}&&[^\p{Lu}]]`
すべてのアルファベット、大文字を除く(減算)
境界一致器:
こうぞう
マッチ
`^`
行の先頭
`$`
行の末尾
`\b`
単語の境界
`\B`
非単語境界
`\A`
入力の先頭
`\G`
最後の一致
`\Z`
入力された末尾は、最後の終了文字にのみ使用されます(もしあれば)
`\z`
入力の末尾
Greedy数量詞:
こうぞう
マッチ
`X?`
X、一度も一度も
`X*`
X,0回または複数回
`X+`
X,1回または複数回
`X{n}`
X,ちょうどn回
`X{n,}`
X,少なくともn回
`X{n,m}`
X,少なくともn回であるが,m回を超えない
Reluctant数量語:
こうぞう
マッチ
`X??`
X、一度も一度も
`X*?`
X,0回または複数回
`X+?`
X,1回または複数回
`X{n}?`
X,ちょうどn回
`X{n,}?`
X,少なくともn回
`X{n,m}?`
X,少なくともn回であるが,m回を超えない
Possessive数量語:
こうぞう
マッチ
`X?+`
X、一度も一度も
`X*+`
X,0回または複数回
`X++`
X,1回または複数回
`X{n}+`
X,ちょうどn回
`X{n,}+`
X,少なくともn回
`X{n,m}+`
X,少なくともn回であるが,m回を超えない
Logical演算子:
こうぞう
マッチ
`XY`
XかかとY
`X|Y`
XまたはY
`(X)`
X、キャプチャグループとして
Backリファレンス:
こうぞう
マッチ
``
一致するnthキャプチャグループ
参照:
こうぞう
マッチ
`\`
いいえ、次の文字を参照してください.
`\Q`
しかし、`E`まですべての文字を引用します.
`\E`
いいえ、`Q`からの引用は終わります.
特殊構造(非キャプチャ):
こうぞう
マッチ
`(?:X)`
X、非捕獲グループとして
`(?idmsux-idmsux)`
ただし、フラグi d m s u x on-offに一致します.
`(?idmsux-idmsux:X)`
Xは、所与のフラグi d m s u x on-offを有する
`(?=X)`
X,ゼロ幅の正lookaheadを通過
`(?!X)`
X,ゼロ幅の負lookaheadを通過
`(?<=X)`
X,ゼロ幅の正lookbehindを通過
`(?
X,ゼロ幅の負lookbehindを通過
`(?>X)`
Xは、独立した非捕獲グループとして
\\
は表します:私は正規表現の中で1つの普通の(字面の上の)反スラッシュを挿入したいと思って、それにいかなる特殊な意味をJavaの中であげないでください、\\
は表します:私は1つの正規表現の反スラッシュを挿入して、その後の文字には特別な意味があります正規表現はJavaでよく使われる3つの使い方があります
String matches(regex)
メソッド.文字列全体をルールでマッチングし、ルールに合致しない箇所がある限りマッチングを終了し、falseString telReg = "1\\d{10}"; //
boolean b = "13812345678".matches(telReg);
String reg = "[a-zA-Z]\\d*"; //
String reg = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+"; //
String reg = "\\w+@\\w+(\\.\\w+)+"; //
String split(regex);
String[] arr = "a.b.c.d".split("\\."); //
String[] arr = "c:\\test\\a.txt".split("\\\\"); //
String[] arr = "erkktyqqquizzzzzo".split("(.)\\1+"); //
String replaceAll(regex, str);
regexに定義されたグループがある場合、第2のパラメータで$記号で正規表現の既存のグループString str = "qq123456w14op25675f".replaceAll("\\d{5,}","#"); // 5
String str = "addbgggckkkd".replaceAll("(.)\\1+","#"); //
String str = "erkktyqqquizzzzzo".replaceAll("(.)\\1+","$1"); //
//
Pattern p = Pattern.compile(reg);
// 。 。
Matcher m = p.matcher(str);
while(m.find()) {
System.out.println(m.group());
}
こうぞう
マッチ
`x`
文字x
`\\`
バックスラッシュ文字
`\0n`
8進数値0の文字n(0<=n<=7)
`\0nn`
8進数値0の文字nn(0<=n<=7)
`\0mnn`
8進数値0の文字mnn(0<=m<=3、0<=n<=7)
`\xhh`
16進数値0 xの文字hh
`\uhhhh`
16進数値0 xの文字hhh
`\t`
タブ(`'''09')
``
新しい行(改行)記号(`'''A')
`\r`
リターン記号(`'''D')
`\f`
改ページ(`'''C')
`\a`
アラーム(bell)記号(`'<07')
`\e`
エスケープ記号(`'1 B')
`\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]]`
mからp:`[a-lq-z]`(減算)ではなくaからz
事前定義文字クラス:
こうぞう
マッチ
`.`
任意の文字(行の終端と一致するか一致しないか)
`\d`
数字:`[0-9]`
`\D`
非数字:`[^0-9]`
`\s`
空白文字:`[tx 0 Bfr]`
`\S`
空白以外の文字:`[^s]`
`\w`
単語文字:`[a-zA-Z_0-9]`
`\W`
非単語文字:`[^w]`
POSIX文字類(US-ACSCIIのみ):
こうぞう
マッチ
`\p{Lower}`
小文字文字:`[a-z]`
`\p{Upper}`
大文字文字:`[A-Z]`
`\p{ASCII}`
すべてのASCII:`[x 00-x 7 F]`
`\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}x 20]`
`\p{Blank}`
スペースまたはタブ:`[t]`
`\p{Cntrl}`
制御文字:`[x 00-x 1 Fx 7 F]`
`\p{XDigit}`
16進数:`[0-9 a-fA-F]`
`\p{Space}`
空白文字:`[tx 0 Bfr]`
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{InGreek}`
Greekブロックの文字
`\p{Lu}`
大文字(単純カテゴリ)
`\p{Sc}`
通貨記号
`\P{InGreek}`
すべての文字、Greekブロックから除外(否定)
`[\p{L}&&[^\p{Lu}]]`
すべてのアルファベット、大文字を除く(減算)
境界一致器:
こうぞう
マッチ
`^`
行の先頭
`$`
行の末尾
`\b`
単語の境界
`\B`
非単語境界
`\A`
入力の先頭
`\G`
最後の一致
`\Z`
入力された末尾は、最後の終了文字にのみ使用されます(もしあれば)
`\z`
入力の末尾
Greedy数量詞:
こうぞう
マッチ
`X?`
X、一度も一度も
`X*`
X,0回または複数回
`X+`
X,1回または複数回
`X{n}`
X,ちょうどn回
`X{n,}`
X,少なくともn回
`X{n,m}`
X,少なくともn回であるが,m回を超えない
Reluctant数量語:
こうぞう
マッチ
`X??`
X、一度も一度も
`X*?`
X,0回または複数回
`X+?`
X,1回または複数回
`X{n}?`
X,ちょうどn回
`X{n,}?`
X,少なくともn回
`X{n,m}?`
X,少なくともn回であるが,m回を超えない
Possessive数量語:
こうぞう
マッチ
`X?+`
X、一度も一度も
`X*+`
X,0回または複数回
`X++`
X,1回または複数回
`X{n}+`
X,ちょうどn回
`X{n,}+`
X,少なくともn回
`X{n,m}+`
X,少なくともn回であるが,m回を超えない
Logical演算子:
こうぞう
マッチ
`XY`
XかかとY
`X|Y`
XまたはY
`(X)`
X、キャプチャグループとして
Backリファレンス:
こうぞう
マッチ
``
一致するnthキャプチャグループ
参照:
こうぞう
マッチ
`\`
いいえ、次の文字を参照してください.
`\Q`
しかし、`E`まですべての文字を引用します.
`\E`
いいえ、`Q`からの引用は終わります.
特殊構造(非キャプチャ):
こうぞう
マッチ
`(?:X)`
X、非捕獲グループとして
`(?idmsux-idmsux)`
ただし、フラグi d m s u x on-offに一致します.
`(?idmsux-idmsux:X)`
Xは、所与のフラグi d m s u x on-offを有する
`(?=X)`
X,ゼロ幅の正lookaheadを通過
`(?!X)`
X,ゼロ幅の負lookaheadを通過
`(?<=X)`
X,ゼロ幅の正lookbehindを通過
`(?
X,ゼロ幅の負lookbehindを通過
`(?>X)`
Xは、独立した非捕獲グループとして