Java正規表現によくあるマッチ パターン

2009/03/13 13:07Update
TAGS: Java | 正規表現 | 文字列 | String | matches | replaceAll | Matcher | Pattern | regex | パターン | メタ文字

Java正規表現におけるよくあるマッチパターンとその概要、使い方(サンプル)などについて学びます。

Java正規表現について


Java正規表現について、次の記事をご参照ください。
Java正規表現 概要

Javaの正規表現によくあるマッチパターン


正規表現では、特別な意味を持つメタ文字で作られた条件をパターンと言います。
例えば、
数字を表す正規表現のパターン:[0-9]+
Eメールのフォーマットに表すパターン:[0-9a-zA-Z_\\-]+@[0-9a-zA-Z_\\-]+(\\.[0-9a-zA-Z_\\-]+){1,}

Java使用できる主要なメタ文字の一覧を以下に示します。
メタ文字 説明 使用例
^ 行頭にマッチします。 例:1、^hello。行頭にhelloの文字列はこのパターンにマッチします。
$ 行末にマッチします。 例:1、hello$。行末にhelloの文字列はこのパターンにマッチします。
. 改行以外の任意の1文字にマッチします。 例:1、hello.world。hello worldやhello-worldなどの文字列はこのパターンにマッチします。
[] 角括弧内の任意の1文字にマッチします 例:1、[abc]。aかb、cはこのパターンにマッチします。
    2,r[aeu]d。radやred、rudはこのパターンにマッチします。
[A-Z] 英大文字A-Zの任意1文字にマッチします。 例:1、a[A-Z]c。aAc,aBc,…,aZcなどの文字列はこのパターンにマッチします。
[a-z] 英小文字a-zの任意1文字にマッチします。 例:1、a[a-z]c。aac,abc,…,azcなどの文字列はこのパターンにマッチします。
[0-9] 数字0-9の任意1文字にマッチします。 例:1、a[0-9]c。a0c,a1c,…,a9cなどの文字列はこのパターンにマッチします。
[^] 角括弧内に含まれない1文字にマッチします。 例:1、[^abc]。a、b、c以外の文字はこのパターンにマッチします。
* 直前の表現を0回以上繰り返します。 例:1、ab*。aやab、abb、abbbなどの文字列はこのパターンにマッチします。
+ 直前の表現を0回以上繰り返します。 例:1、ab+。ab、abb、abbbなどの文字列はこのパターンにマッチします。
? 直前の表現を0回または1回繰り返します。 例:1、ab?。aとabはこのパターンにマッチします。
{n} 直前の表現をn回繰り返します。nは整数。 例:1、ab{2}。abbはこのパターンにマッチします。
{n,} 直前の表現をn回以上繰り返します。nは整数。 例:1、ab{2,}。abb、abbbなどはこのパターンにマッチします。
{n,m} 直前の表現をn回からm回まで繰り返します。n,mは整数。 例:1、ab{2,5}。abb,abbb,abbbb,abbbbbはこのパターンにマッチします。
a|b aまたはbにマッチします 例:1、hello|world。helloまたworldはこのパターンにマッチします。
() グループ化。()内のパターンは(グループ)と見なされます。このグループに一致する文字列を記憶します。1,2..などの数字によるグループへのアクセスできます。 -
\w 任意の英数字と_ 1文字にマッチします。 例:1、"abc23_".matches("\\w*")。trueに返します。
\W 英数字と_以外の任意1文字にマッチします。 例:1、"abc23_".matches("\\W*")。falseに返します。
\s 任意の空白文字(スペース、タブ、改行、復帰)1文字にマッチします。 例:1、"    \n\r".matches("\\s*")。trueに返します。
\S 空白文字(スペース、タブ、改行、復帰)以外の任意1文字にマッチします。 例:1、"    \n\r".matches("\\s*")。falseに返します。
\d 数字の1文字にマッチします。 例:1、"120".matches("\\d*")。trueに返します。
\D 数字以外の1文字にマッチします。 例:1、"120".matches("\\D*")。falseに返します。
[あ-ん] ひらがなの1文字にマッチします。 例:1、"あいう".matches("[あ-ん]*")。trueに返します。
[ア-ン] カタカナの1文字にマッチします。 例:1、"アイウ".matches("[ア-イ]*")。trueに返します。


参考資料


java.lang.String API仕様
java.util.regex.Matcher API仕様
java.util.regex.Pattern API仕様

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments

☆☆☆

1 - Syboos.jp編集長A 2011/09/22 15:35

ご指摘ありがとうございます。確かにおっしゃる通りです。

☆☆☆

2 - white_jack072011/03/23 23:33

正規表現の「+」の説明、「直前の表現を0回以上」となっていますが、正しくは「直前の表現を1回以上」だと思います。
0だと「*」の説明とかぶりますしね^^

用户名 (required)

Email (will not be published) (required)

URL

Evaluation