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

リファクタリング

業務で大幅なリファクタリングをする機会があり、その際の注意だったり、気をつけるべきことなどをまとめておきます。 自分用なので自分にしかわからない言葉で書いてある可能性が大きいです。 気になる方は問い合 …

no image

JSFのテンプレート機能

Contents1 保守性の向上で必要なHTMLの考え方1.1 サンプル1.2 ファイル構成1.3 ソース1.3.1 静的なファイル群1.3.2 テンプレート1.3.3 アクセスファイル1.4 Net …

no image

JSPでのインクルード

JSPで社内アプリを作る機会があったので、メモ。 基本的なこともまだわかっていないんですが、とりあえずでてきたものから紹介してきます。 インクルードから。 ヘッダー、フッターみたいな別々に分けたりする …

no image

例外処理について その2

以前、「例外処理について」で例外処理について記述をしたんですが、漠然としていたのともう1回まとめなおしたかったため、メモしておきます。 Contents1 例外とは?2 例外のクラス分け2.1 Thr …