正規表現 リファレンス

提供:Wiki@KDS
2008年8月4日 (月) 17:54時点における192.168.200.231 (トーク)による版
ナビゲーションに移動 検索に移動

正規表現

「正規表現」とは、さまざまな文字列をメタキャラクタと呼ばれる記号を使って表現することをいいます。

■ 正規表現 リファレンスでよく出てくる語句

・メタキャラクタ(別名:メタ文字) ⇒ メタキャラクタとは、正規表現における特別な意味を持った記号のこと。
・マッチ ⇒ ある文字列が、正規表現によって定義される特定のパターンに一致(合致)すること。
・エスケープ ⇒ メタキャラクタ自体を文字としてマッチさせるために、メタキャラクタの前に「 \ 」を付けてメタキャラクタが持つ意味を無効化すること。


■ メタキャラクタ リファレンス


・任意の一文字に一致

◆メタキャラクタ⇒ . (ドット)

[解説] 「.」は、あらゆる文字にマッチするメタキャラクタのこと。「.」1つで1文字を表す。

[文例1] 「光画デジタルサプライ」を正規表現でマッチさせる。
 文字列(例):光画デジタルサプライ

置換前の指定 ⇒ ........... (他にも、「光........イ」や「..デジタル....」としても可)


 ※「光画デジタルサプライ」は10文字なので、「.」を10個並べることでマッチさせることができる。

[文例2] 文字の「.」(ドット)自体も正規表現でマッチさせる。
 文字列(例):index.html

置換前の指定 ⇒ .....\.....


 ※「.」の前に「\」をつける(エスケープ)ことで「.」自体をマッチさせることができる。

・直前の正規表現と0回以上一致

◆メタキャラクタ⇒ * (アスタリスク)

[解説] 「*」は、「*」の直前に置かれた正規表現を0回以上繰り返すメタキャラクタのこと。

[文例] 「人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。」を正規表現でマッチさせる。
 文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。

置換前の指定 ⇒ .*


 ※「*」の前に「.」を付けることによって、不特定の文字列(任意の一文字を0回以上繰り替えす文字列)に一致させることができる。

・直前の正規表現と指定回数一致

◆メタキャラクタ⇒ { } (中カッコ)

[解説] 「 { } 」は、「 { } 」の直前に置かれた正規表現を指定回数繰り返すメタキャラクタのこと。「 { } 」の中には数字(指定回数)が入ります。

[文例] ある文字列の中で、複数回繰り返されている特定の文字を正規表現を使って一致させる。

 文字列(例):人気のラムカン・ダムールにタカシマヤタカシマヤ限定のローズピンクが新登場。
 特定の文字:タカシマヤタカシマヤ

置換前の指定 ⇒ (タカシマヤ){2}


・グループ化と一時記憶

◆メタキャラクタ⇒ ( ) (半角カッコ)

[解説] 「 ( 」と「 ) 」で囲われた部分をグループ化し、グループ化した内容を一時的に記憶させることができるメタキャラクタのこと。

[文例] 文字列から特定の文字を正規表現を使って抜き出す。

 文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。
 特定の文字:「タカシマヤ」と「ローズピンク」

置換前の指定 ⇒ .*(タカシマヤ).*(ローズピンク).*

置換後の指定 ⇒ $1$2

◎置換結果 ⇒ タカシマヤローズピンク


 ※グループ化された内容は、「$1」で表示させることが可能。「( )」の数によって$1、$2、$3...と増えていく。

・文字列の先頭に一致

◆メタキャラクタ⇒ ^ (キャレット)

[解説] 文字列の先頭を表すメタキャラクタのこと。

[文例] 特定の文字から始まる文字列を、正規表現を使って一致させる。

 文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。
 特定の文字:人気のラムカン・ダムール

置換前の指定 ⇒ ^人気のラムカン・ダムール.*


・文字列の末尾に一致

◆メタキャラクタ⇒ $ (ドル)

[解説] 文字列の末尾を示すメタキャラクタのこと。文字ではなく位置にマッチする。

[文例] 末尾に特定の文字が付く文字列を、正規表現で一致させる

 文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。
 特定の文字:新登場。

置換前の指定 ⇒ .*新登場。$


・指定された文字のいずれかにマッチ

◆メタキャラクタ⇒ [ ] (大カッコ)

[解説] 「 [ 」と「 ] 」で囲われた文字の中のいずれかにマッチするメタキャラクタのこと。

[文例1] 商品番号「232545」から「232549」までを正規表現で一致させる。

 文字列(例):232543,232544,232545,232546,232547,232548,232549,232550,232551,232552

置換前の指定 ⇒ 23254[5-9]


 ※「 [ ] 」の中に2つ数字を入れ、数字と数字の間に「 - (ハイフン)」を入れることで「例:[5-9]」は「5」または「6」または「7」または「8」または「9」という意味になる。

[文例2] 商品番号「232545」から「232549」以外を正規表現で一致させる。

 文字列(例):232543,232544,232545,232546,232547,232548,232549,232550,232551,232552

置換前の指定 ⇒ 23254[^5-9]


 ※「 [ 」のすぐ後ろに「 ^ 」を入れることで、「 [ ] 」の中に指定した文字以外の文字に一致することができる。これを「否定」といいます。

・2つの正規表現のどちらかにマッチ

◆メタキャラクタ⇒ | (パイプ)

[解説] 正規表現(または文字)の選択を表すメタキャラクタのこと。「 | 」の両側に置かれた正規表現(または文字)のどちらかにマッチさせたい場合に使います。

[文例] 「たかしまや、タカシマヤ、髙島屋、takashimaya、TAKASHIMAYA」を「高島屋」に置換する。

置換前の指定 ⇒ たかしまや|タカシマヤ|髙島屋|takashimaya|TAKASHIMAYA

置換後の指定⇒ 高島屋


・任煮の数字に一致

◆メタキャラクタ⇒ \d (エンマーク + 半角小文字 d)

[解説] 0から9までの任意の数字1文字にマッチするメタキャラクタのこと。

[文例] ある文字列内にある6桁の数字を正規表現を使って一致させる。

 文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンク(商品番号:232551)が新登場。
 特定の文字:232551

置換前の指定 ⇒ \d{6} (「\d\d\d\d\d\d」でも可)


・各種の制御文字に一致

◆メタキャラクタ⇒ \r (エンマーク + 半角小文字 r)、 \n (エンマーク + 半角小文字 n)、 \t (エンマーク + 半角小文字 t)

[解説] 「\r」は復帰(CR)、「\n」は改行(LF)、「\t」は水平タブを表す。

[文例] ある複数の文字列から、水平タブと復帰、改行を取り除く。

 文字列(例):【タカシマヤ限定ローズピンク】オーブンに使えて、サラダからデザートまで多彩に活躍します。
一人前の前菜やサラダ、ソースや薬味、デザートなどの盛り付けにぴったりです。

置換前の指定 ⇒ \t|\r\n


※サクラエディタで改行に完全にマッチさせるには、「\r\n」とする必要があります。

・直前の正規表現と0回以上一致(最短一致)

◆メタキャラクタ⇒ *? (アスタリスク + クエスチョンマーク)

[解説] 「 *? 」は「 * 」と同じように直前の正規表現を0回以上繰り返すメタキャラクタです。しかし、「 *? 」は「 * 」と違い「できる限り短くマッチさせる」ように振舞います。逆に「 * 」は「できるかぎり長くマッチさせる」ように振舞います。

[文例] hrefの中身だけを置換する。

 文字列(例):
<a href="/shopping/summergift/index.html"><img src="banner/main_bnr_s080730_summergift.jpg" width="272" height="87" ...(以下、略)

置換前の指定 ⇒ href="(.*?)"

置換後の指定 ⇒ href="http://www.takashimaya.co.jp$1"


※置換前の指定で「href="(.*)"」とした場合、href=""より後にも「 " 」が存在するため(例:src="")意図したようにマッチしません。「href="(.*)"」であれば「 " 」の後で最初の「 " 」を発見した時点でマッチをやめます。








■ 目的別逆引き リファレンス