skillup

技術ブログ

Java

正規表現(判定:置換:抽出)

投稿日:

Javaの正規表現を利用した置換、抽出について書きます。

正規表現の基本ルール

パターン 意味
パターン 文字列 結果
^ 先頭にマッチする “^ab” “abcd”
“cdab”
true
false
$ 末尾にマッチする “ab$” “abcd”
“cdab”
false
true
. 任意の1文字にマッチする “a.c” “abc”
“abbc”
“ac”
true
false
false
? 直前の文字が0個または1個にマッチする “^A?$” “”
“A”
“AA”
“B”
true
true
false
false
* 直前の文字が0個以上にマッチする “^A*$” “”
“A”
“AA”
“B”
true
true
true
false
+ 直前の文字が1個以上にマッチする “^A+$” “”
“A”
“AA”
“B”
false
true
true
false
\d 半角数値(0~9)にマッチする
※ [0-9]と同じ
“\\d” “0123”
“0123”
“abc”
true
false
false
\D 半角数値(0~9)以外にマッチする
※ [^0-9]と同じ
“\\D” “0123”
“0123”
“abc”
false
true
true
\w 半角英数値(0~9、a~z、A~Z、_)にマッチする
※ [0-9a-zA-Z_]と同じ
“\\w” “012_AbC”
“12Ab”
“#$%&”
true
false
false
\W 半角英数値(0~9、a~z、A~Z、_)以外にマッチする
※ [^0-9a-zA-Z_]と同じ
“\\W” “012_AbC”
“12Ab”
“#$%&”
false
true
true
[ ] いずれかの文字とマッチする “[ABC]” “A”
“B”
“D”
true
true
false
( ) 1つのグループとして扱う “(ABC)” “ABC”
“CBA”
true
false
{n} 直前の文字にn回マッチする “^A{3}$” “AA”
“AAA”
“AAAA”
false
true
false
{n,} 直前の文字にn回以上マッチする “^A{3,}$” “AA”
“AAA”
“AAAA”
false
true
true
{n,m} 直前の文字にn回以上m回以下マッチする “^A{3,4}$” “AA”
“AAA”
“AAAA”
“AAAAA”
false
true
true
false
| いずれかとマッチする “ABC|DEF” “ABC”
“DEF”
“CBA”
“DE”
true
true
false
false
範囲を指定する “[3-7]” “2”
“3”
“7”
“8”
false
true
true
false
^ 否定([ ]の中で使用する) “[^AB]” “A”
“B”
“C”
false
false
true
&& かつ “[0-9&&[^4]]” “3”
“4”
“5”
true
false
true

 

Javaでの正規表現の処理の流れ

JavaではPatternクラスとMatchクラスを使って、正規表現を表現します。大まかに下記のような流れです。

Step1 文字列で正規表現を定義

例:郵便番号の場合、数字3桁-4桁なので下記のように表示。※エスケープ文字に注意!
String regex =”\\d{3}-\\d{4}”;

Step2 compileメソッドをつかって、Patternオブジェクトを生成

Patter p = patter.compile( regex );

また改行を含めたい大文字と小文字を含めたいなどは下記のオプションを第2引数にいれればよい。

Patter p = patter.compile( regex , Pattern.CASE_INSENSITIVE );

Step3 Patterオブジェクトのmatcherメソッドを使い、実際の文字列をMatcherオブジェクトにセットする。

Matcher matcher = patter.matcher(“111-1111”);

Step4 Matcherオブジェクトのfindやgroupを使い、判定や抽出を行う

matcher.find()やmatcher.group()など

実処理

判定

対象文字列が正規表現と一致するかを判定する

抽出

正規表現に一致するものを抽出する

置換

正規表現に一致するものを置換する

-Java
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

JSF リダイレクト後のメッセージ&disabled=true

少々細かいですがJSFネタです。 Contents1 リダイレクト後のメッセージ2 h:commandbutton disabled=trueについて リダイレクト後のメッセージ JSFからManag …

no image

開発環境と本番での設定ファイル変更

開発と本番で設定ファイル自体(web.xmlなど)はわけると思うのですが、以前はわからず、開発のものと本番のものを手動でわけていました。 Javaでどうやってやるかを調べたところ、pomにかなり便利な …

no image

Javaのオブジェクト指向に関して

Contents1 staticメソッド2 アクセス修飾子3 抽象クラス3.1 オーバーライド(親クラスのメソッドを上書きすること)3.2 オーバーロード(同名メソッドを複数もつこと)4 interf …

no image

便利すぎる道具の弊害

現在、Javaのプロジェクトでは会社でNetbeansを使っていますが、IDEを使っているばっかりに理解できていないところがありました。便利すぎる道具の弊害ですね・・・ IDEについて一応説明をしてお …

no image

配列からListへの変換

配列からListにしたいとき、ループでいちいち回さなくても下記の処理で一気にListに変換できます。

Netbeansに教えてもらいま …

アーカイブ