「正規表現 リファレンス」の版間の差分

提供:Wiki@KDS
ナビゲーションに移動 検索に移動
編集の要約なし
 
Yura (トーク | 投稿記録)
編集の要約なし
 
(他の1人の利用者による、間の10版が非表示)
1行目: 1行目:
----
----
<div id="regexp">


==正規表現==
==正規表現==


[正規表現 リファレンスでよく出てくる語句]<br>
「正規表現」とは、さまざまな文字列をメタキャラクタと呼ばれる記号を使って表現することをいいます。
・メタキャラクタ(別名:メタ文字)⇒メタキャラクタとは、正規表現における特別な意味を持った記号のこと。<br>
 
・マッチ⇒正規表現を使って、文字列を一致させること。
===■ 正規表現 リファレンスでよく出てくる語句===
 
・メタキャラクタ(別名:メタ文字) ⇒ メタキャラクタとは、正規表現における特別な意味を持った記号のこと。<br>
・マッチ ⇒ ある文字列が、正規表現によって定義される特定のパターンに一致(合致)すること。<br>
・エスケープ ⇒ メタキャラクタ自体を文字としてマッチさせるために、メタキャラクタの前に「 \ 」を付けてメタキャラクタが持つ意味を無効化すること。<br>
 
<hr />
 
===■ メタキャラクタ リファレンス===
<br>
 
====・メタキャラクタ 一覧表====


===■使用頻度(高)===
<p>正規表現の主なメタキャラクタの一覧表です。 ※各メタキャラクタの詳細については、後述の[解説]を参照してください。(一部、ないものもあります。)</p>
<table class="meta-table">
<tr>
<th width="110">メタキャラクタ</th>
<th>説明</th>
</tr>
<tr>
<td align="center">.</td>
<td>任意の1文字にマッチ</td>
</tr>
<tr>
<td align="center">\</td>
<td>メタキャラクタの持つ意味を無効化する</td>
</tr>
<tr>
<td align="center">*</td>
<td>直前の正規表現と0回以上一致</td>
</tr>
<tr>
<td align="center">^</td>
<td>文字列の先頭にマッチ</td>
</tr>
<tr>
<td align="center">$</td>
<td>文字列の末尾にマッチ</td>
</tr>
<tr>
<td align="center">[ ]</td>
<td>指定された文字の中のいずれかにマッチ</td>
</tr>
<tr>
<td align="center">[^ ]</td>
<td>指定された文字以外の文字にマッチ(否定)</td>
</tr>
<tr>
<td align="center">( )</td>
<td>部分正規表現のグルーピング</td>
</tr>
<tr>
<td align="center">(?: )</td>
<td>部分正規表現のグルーピング(一時記憶なし)</td>
</tr>
<tr>
<td align="center">|</td>
<td>左右の正規表現(または文字)のどちらかにマッチ</td>
</tr>
<tr>
<td align="center">{ }</td>
<td>直前の正規表現と指定回数一致</td>
</tr>
<tr>
<td align="center">+</td>
<td>直前の正規表現と1回以上一致</td>
</tr>
<tr>
<td align="center">?</td>
<td>直前の正規表現と0回または1回以上一致</td>
</tr>
<tr>
<td align="center">\d 、 \D</td>
<td>任意の数字にマッチ / 数字以外の任意の1文字にマッチ</td>
</tr>
<tr>
<td align="center">\s、\S</td>
<td>任意の空白文字にマッチ(タブ、改行も含む。全角空白は含まない) / 空白文字以外の任意の文字にマッチ</td>
</tr>
<tr>
<td align="center">\w、\W</td>
<td>アルファベットの大文字・小文字・数字・アンダースコア( _ )にマッチ / アルファベットの大文字・小文字・数字・アンダースコア( _ )以外の文字にマッチ</td>
</tr>
<tr>
<td align="center">\r</td>
<td>復帰</td>
</tr>
<tr>
<td align="center">\n</td>
<td>改行</td>
</tr>
<tr>
<td align="center">\t</td>
<td>水平タブ</td>
</tr>
<tr>
<td align="center">(?! )</td>
<td>「?!」の右側に指定した正規表現(または文字)が存在しない場合にマッチ(否定の先読み)</td>
</tr>
</table>
 
<hr />


====・任意の一文字に一致====
====・任意の一文字に一致====


<p>メタキャラクタ⇒ . (ドット)</p>
<p>◆メタキャラクタ⇒ . (ドット)</p>
<p class="explanation">[解説] 「.」は、あらゆる文字にマッチするメタキャラクタのこと。「.」1つで1文字を表す。</p>
<div class="example">
<dl>
<dl>
<dt>[解説]</dt>
<dt>[文例1] 「光画デジタルサプライ」を正規表現でマッチさせる。</dt>
<dd>「.」とは、どのような文字にでもマッチする正規表現のこと。</dd>
<dd> 文字列(例):光画デジタルサプライ</dd><br>
</dl>
<dd class="specify">
<dl>
<p><strong>置換前の指定</strong> ⇒ ........... (他にも、「光........イ」や「..デジタル....」としても可)</p>
<dt>[文例]</dt>
</dd><br>
<dd>「光画デジタルサプライ」を正規表現でマッチさせる。</dd><br>
<dd> ※「光画デジタルサプライ」は10文字なので、「.」を10個並べることでマッチさせることができる。</dd><br>
<dd>文字列(例):光画デジタルサプライ</dd>
<dt>[文例2] 文字の「.」(ドット)自体も正規表現でマッチさせる。</dd>
<dd></dd>
<dd> 文字列(例):index.html</dd><br>
<dd>正規表現⇒「...........</dd><br>
<dd class="specify">
<dt>[文例(例外)]</dt>
<p><strong>置換前の指定</strong> .....\.....</p>
<dd>文字の「.」(ドット)自体も正規表現でマッチさせる。</dd><br>
</dd><br>
<dd>文字列(例):index.html</dd>
<dd> ※「.」の前に「\」をつける(エスケープ)ことで「.」自体をマッチさせることができる。</dd>
<dd></dd>
<dd>正規表現⇒「.....\.....</dd>
<dd>※「.」の前に「\」をつけることで「.」自体をマッチすることができる。</dd>
</dl>
</dl>
</div>


<hr />


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


<p>メタキャラクター⇒ * (アスタリスク)</p>
<p>◆メタキャラクタ⇒ * (アスタリスク)</p>
<p class="explanation">[解説] 「*」は、「*」の直前に置かれた正規表現を0回以上繰り返すメタキャラクタのこと。</p>
<div class="example">
<dl>
<dl>
<dt>[解説]</dt>
<dt>[文例] 「人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。」を正規表現でマッチさせる。</dt>
<dd>*」は、「*」の直前に置かれた正規表現を0回以上繰り返す正規表現のこと。</dd>
<dd> 文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。</dd><br>
<dd class="specify">
<p>◎<strong>置換前の指定</strong> ⇒ .*</p>
</dd><br>
<dd> ※「*」の前に「.」を付けることによって、不特定の文字列(任意の一文字を0回以上繰り替えす文字列)に一致させることができる。</dd>
</dl>
</dl>
</div>
<hr />
====・直前の正規表現と指定回数一致====
<p>◆メタキャラクタ⇒ { } (中カッコ)</p>
<p class="explanation">[解説] 「 { } 」は、「 { } 」の直前に置かれた正規表現を指定回数繰り返すメタキャラクタのこと。「 { } 」の中には数字(指定回数)が入ります。</p>
<div class="example">
<dl>
<dl>
<dt>[文例]</dt>
<dt>[文例] ある文字列の中で、複数回繰り返されている特定の文字を正規表現を使って一致させる。</dt><br>
<dd>「人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。」を正規表現でマッチさせる。</dd><br>
<dd> 文字列(例):人気のラムカン・ダムールにタカシマヤタカシマヤ限定のローズピンクが新登場。</dd>
<dd>文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。</dd>
<dd> 特定の文字:タカシマヤタカシマヤ</dd><br>
<dd></dd>
<dd class="specify">
<dd>正規表現⇒「.*」</dd>
<p><strong>置換前の指定</strong> ⇒ (タカシマヤ){2}</p>
<dd>※「*」の前に「.」を付けることによって、不特定の文字列(任意の一文字を0回以上繰り替えす文字列)に一致させることができる。</dd>
</dd>
</dl>
</dl>
</div>


<hr />
<hr />
51行目: 169行目:
====・グループ化と一時記憶====
====・グループ化と一時記憶====


<p>メタキャラクター⇒ ( ) (半角カッコ)</p>
<p>◆メタキャラクタ⇒ ( ) (半角カッコ)</p>
<p style="border:1px dashed #666699;padding:5px 10px;background:#e4f6f1">[解説] 「 ( 」と「 ) 」で囲われた部分をグループ化し、グループ化した内容を一時的に記憶させることができる正規表現のこと。</p>
<p class="explanation">[解説] 「 ( 」と「 ) 」で囲われた部分をグループ化し、グループ化した内容を一時的に記憶させることができるメタキャラクタのこと。</p>
<div style="border:1px dashed #666699;padding:5px 10px;background:#F6F5E4;">
<div class="example">
<dl>
<dl>
<dt>[文例] 特定の文字が入っている文字列から、特定の文字を正規表現を使って抜き出す。</dt><br>
<dt>[文例] 文字列から特定の文字を正規表現を使って抜き出す。</dt><br>
<dd> 文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。</dd>
<dd> 文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。</dd>
<dd> ↓</dd>
<dd> 特定の文字:「タカシマヤ」と「ローズピンク」</dd><br>
<dd> 正規表現⇒「.*(タカシマヤ).*(ローズピンク).*</dd>
<dd class="specify">
<dd> 置換後の指定⇒「$1$2」</dd>
<p>◎<strong>置換前の指定</strong> ⇒ .*(タカシマヤ).*(ローズピンク).*</p>
<dd> 置換後⇒「タカシマヤローズピンク」</dd>
<p>◎<strong>置換後の指定</strong> $1$2</p>
<dd> ※グループ化された内容は、「$1」で表示させることが可能。「( )」の数によって$1、$2、$3...と増えていく。</dd>
<p>◎置換結果 ⇒ タカシマヤローズピンク</p>
</dd><br>
<dd>
※グループ化された内容は、「$1」で表示させることが可能。「( )」の数によって$1、$2、$3...と増えていく。一時記憶させたくない場合は、「 ( 」を「 (?: 」とするとよい。
</dd>
</dl>
</dl>
</div>
</div>
<hr />


====・文字列の先頭に一致====
====・文字列の先頭に一致====


<p>メタキャラクター⇒ ^ (キャレット)</p>
<p>◆メタキャラクタ⇒ ^ (キャレット)</p>
<p class="explanation">[解説] 文字列の先頭を表すメタキャラクタのこと。</p>
<div class="example">
<dl>
<dt>[文例] 特定の文字から始まる文字列を、正規表現を使って一致させる。</dt><br>
<dd> 文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。</dd>
<dd> 特定の文字:人気のラムカン・ダムール</dd><br>
<dd class="specify">
<p>◎<strong>置換前の指定</strong> ⇒ ^人気のラムカン・ダムール.*</p>
</dd>
</dl>
</div>
 
<hr />
 
====・文字列の末尾に一致====
 
<p>◆メタキャラクタ⇒ $ (ドル)</p>
<p class="explanation">[解説] 文字列の末尾を示すメタキャラクタのこと。文字ではなく位置にマッチする。</p>
<div class="example">
<dl>
<dl>
<dt>[解説]</dt>
<dt>[文例] 末尾に特定の文字が付く文字列を、正規表現で一致させる</dt><br>
<dd>文字列の先頭を表す正規表現のこと。</dd>
<dd> 文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。</dd>
<dd> 特定の文字:新登場。</dd><br>
<dd class="specify">
<p>◎<strong>置換前の指定</strong> ⇒ .*新登場。$</p>
</dd>
</dl>
</dl>
</div>
<hr />
====・指定された文字のいずれかにマッチ====
<p>◆メタキャラクタ⇒ [ ] (大カッコ)</p>
<p class="explanation">[解説] 「 [ 」と「 ] 」で囲われた文字の中のいずれかにマッチするメタキャラクタのこと。</p>
<div class="example">
<dl>
<dl>
<dt>[文例]</dt>
<dt>[文例] 商品番号「232545」から「232549」までを正規表現で一致させる。</dt><br>
<dd>特定の文字から始まる文字列を、正規表現を使って一致させる。</dd><br>
<dd> 文字列(例):232543,232544,232545,232546,232547,232548,232549,232550,232551,232552</dd><br>
<dd>文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。</dd>
<dd class="specify">
<dd></dd>
<p>◎<strong>置換前の指定</strong> ⇒ 23254[5-9]</p>
<dd>正規表現⇒「^人気のラムカン・ダムール.*」</dd>
</dd><br>
<dd>※「 [ ] 」の中に2つ数字を入れ、数字と数字の間に「 - (ハイフン)」を入れることで「例:[5-9]」は「5」または「6」または「7」または「8」または「9」という意味になる。</dd><br>
</dl>
</dl>
</div>
<hr />
====・指定された文字以外の文字にマッチ(否定)====
<p>◆メタキャラクタ⇒ [^ ] (大カッコ + キャレット)</p>
<p class="explanation">[解説] 「 [ 」のすぐ後に「 ^ 」を入れることで、「 [ ] 」の中に指定した文字<strong>以外</strong>の文字にマッチすることができます。これを「否定」といいます。</p>
<div class="example">
<dl>
<dt>[文例] 特定の文字<strong>以外</strong>の文字を正規表現で一致させる。</dt><br>
<dd> 文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。</dd>
<dd> 特定の文字:タカシマヤ限定</dd><br>
<dd class="specify">
<p>◎<strong>置換前の指定</strong> ⇒ [^タカシマヤ限定]</p>
</dd><br>
<dd>
※否定では、「 [ ] 」の中に記述されている文字の1文字ずつ(「タ」「カ」「シ」「マ」「ヤ」「限」「定」)を精査します。そのため、必ずしも連続した文字列のみにマッチするわけではありません。今回の例文の場合、「タカシマヤ限定」で使っているそれぞれの文字が他でも使われていると、その文字も否定される(マッチしない)ことになります。
</dd>
</dl>
</div>
<hr />
====・2つの正規表現のどちらかにマッチ====
<p>◆メタキャラクタ⇒ | (パイプ)</p>
<p class="explanation">[解説] 正規表現(または文字)の選択を表すメタキャラクタのこと。「 | 」の両側に置かれた正規表現(または文字)のどちらかにマッチさせたい場合に使います。</p>
<div class="example">
<dl>
<dt>[文例] 「たかしまや、タカシマヤ、髙島屋、takashimaya、TAKASHIMAYA」を「高島屋」に置換する。</dt><br>
<dd class="specify">
<p>◎<strong>置換前の指定</strong> ⇒ たかしまや|タカシマヤ|髙島屋|takashimaya|TAKASHIMAYA</p>
<p>◎<strong>置換後の指定</strong>⇒ 高島屋</p>
</dd>
</dl>
</div>
<hr />
====・任煮の数字に一致====
<p>◆メタキャラクタ⇒ \d (エンマーク + 半角小文字 d)</p>
<p class="explanation">[解説] 0から9までの任意の数字1文字にマッチするメタキャラクタのこと。</p>
<div class="example">
<dl>
<dt>[文例] ある文字列内にある6桁の数字を正規表現を使って一致させる。</dt><br>
<dd> 文字列(例):人気のラムカン・ダムールにタカシマヤ限定のローズピンク(商品番号:232551)が新登場。</dd>
<dd> 特定の文字:232551</dd><br>
<dd class="specify">
<p>◎<strong>置換前の指定</strong> ⇒ \d{6} (「\d\d\d\d\d\d」でも可)</p>
</dd>
</dl>
</div>
<hr />
====・各種の制御文字に一致====
<p>◆メタキャラクタ⇒ \r (エンマーク + 半角小文字 r)、 \n (エンマーク + 半角小文字 n)、 \t (エンマーク + 半角小文字 t)</p>
<p class="explanation">[解説] 「\r」は復帰(CR)、「\n」は改行(LF)、「\t」は水平タブを表す。</p>
<div class="example">
<dl>
<dt>[文例] ある複数の文字列から、水平タブと復帰、改行を取り除く。</dt><br>
<dd> 文字列(例):<br>
【タカシマヤ限定ローズピンク】オーブンに使えて、サラダからデザートまで多彩に活躍します。
<pre style="margin:0;"> 一人前の前菜やサラダ、ソースや薬味、デザートなどの盛り付けにぴったりです。</pre>
</dd><br>
<dd class="specify">
<p>◎<strong>置換前の指定</strong> ⇒ \t|\r\n</p>
</dd><br>
<dd>※サクラエディタで改行に完全にマッチさせるには、「\r\n」とする必要があります。</dd>
<!--dd>
※改行に完全にマッチさせる際に、「\r」を指定する理由 ↓<br>
テキストファイル中で改行を意味する文字コードのことを「改行コード」と呼ぶ。<br>
改行コードにはもともと「CR」(Carriage Return : 行頭復帰)と「LF」(Line Feed : 改行)の2つのコードが存在しており、WindowsではCR+LF、Mac OSではCR、<br>
UNIXではLFが使われている。<br>そのため、Windowsのテキストエディタで改行に完全にマッチさせるには、「\r\n」とする必要がある。
</dd-->
</dl>
</div>
<hr />
====・直前の正規表現と0回以上一致(最短一致)====
<p>◆メタキャラクタ⇒ *? (アスタリスク + クエスチョンマーク)</p>
<p class="explanation">[解説] 「 *? 」は「 * 」と同じように直前の正規表現を0回以上繰り返すメタキャラクタです。しかし、「 *? 」は「 * 」と違い「できる限り短くマッチさせる」ように振舞います。逆に「 * 」は「できるかぎり長くマッチさせる」ように振舞います。</p>
<div class="example">
<dl>
<dt>[文例] リンクのみを置換する。</dt><br>
<dd> 文字列(例):<pre style="margin:0;"><a href="/shopping/summergift/index.html"><img src="banner/main_bnr_s080730_summergift.jpg" width="272" height="87" ...(以下、略)</pre></dd><br>
<dd class="specify">
<p>◎<strong>置換前の指定</strong> ⇒ href="(.*?)"</p>
<p>◎<strong>置換後の指定</strong> ⇒ href="http://www.takashimaya.co.jp$1"</p>
</dd><br>
<dd>
※置換前の指定で「href="(.*)"」とした場合、href=""より後にも「 " 」が存在(例:src="")するため意図したようにマッチしません。「href="(.*)"」であれば、「 " 」の後で最初の「 " 」を発見した時点でマッチをやめます。
</dd>
</dl>
</div>
<hr />
====・否定の先読み====
<p>◆メタキャラクタ⇒ (?!正規表現) (半角カッコ + クエスチョンマーク + エクスクラメーションマーク + 正規表現(または文字) + 半角カッコ)</p>
<p class="explanation">[解説] 「 (?!正規表現) 」とは、指定した「正規表現(または文字)」が存在しない場合にマッチするメタキャラクタのこと。</p>
<div class="example">
<dl>
<dt>[文例] 「タカシマヤ限定」の文字が存在しない文字列を正規表現で一致させる。</dt><br>
<dd> 文字列(例):
<pre style="margin:0;">人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。
一人前の前菜やサラダ、ソースや薬味、デザートなどの盛り付けにぴったりです。かわいいハート型は、小物入れにしても素敵です。</pre>
</dd><br>
<dd class="specify">
<p>◎<strong>置換前の指定</strong> ⇒ ^((?:(?!タカシマヤ限定).)*)\r\n</p>
</dd><br>
<dd>
※一時記憶した内容は、$1で参照可能です。今回の場合は、「一人前の前菜や」から「素敵です。」までが一時記憶されています。
</dd>
</dl>
</div>
<hr />
<br>
===■ 目的別逆引き リファレンス===
<hr />
<br>
==サクラエディタの正規表現==
サクラエディタで正規表現を使用する際は、必ず「正規表現」にチェックを入れてください。
<br><br>
[[画像:サクラ置換.png]]
</div>

2023年6月29日 (木) 17:55時点における最新版


正規表現[編集]

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

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

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


■ メタキャラクタ リファレンス[編集]


・メタキャラクタ 一覧表[編集]

正規表現の主なメタキャラクタの一覧表です。 ※各メタキャラクタの詳細については、後述の[解説]を参照してください。(一部、ないものもあります。)

メタキャラクタ 説明
. 任意の1文字にマッチ
\ メタキャラクタの持つ意味を無効化する
* 直前の正規表現と0回以上一致
^ 文字列の先頭にマッチ
$ 文字列の末尾にマッチ
[ ] 指定された文字の中のいずれかにマッチ
[^ ] 指定された文字以外の文字にマッチ(否定)
( ) 部分正規表現のグルーピング
(?: ) 部分正規表現のグルーピング(一時記憶なし)
| 左右の正規表現(または文字)のどちらかにマッチ
{ } 直前の正規表現と指定回数一致
+ 直前の正規表現と1回以上一致
? 直前の正規表現と0回または1回以上一致
\d 、 \D 任意の数字にマッチ / 数字以外の任意の1文字にマッチ
\s、\S 任意の空白文字にマッチ(タブ、改行も含む。全角空白は含まない) / 空白文字以外の任意の文字にマッチ
\w、\W アルファベットの大文字・小文字・数字・アンダースコア( _ )にマッチ / アルファベットの大文字・小文字・数字・アンダースコア( _ )以外の文字にマッチ
\r 復帰
\n 改行
\t 水平タブ
(?! ) 「?!」の右側に指定した正規表現(または文字)が存在しない場合にマッチ(否定の先読み)

・任意の一文字に一致[編集]

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

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

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

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


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

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

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


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

・直前の正規表現と0回以上一致[編集]

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

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

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

置換前の指定 ⇒ .*


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

・直前の正規表現と指定回数一致[編集]

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

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

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

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

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


・グループ化と一時記憶[編集]

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

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

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

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

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

置換後の指定 ⇒ $1$2

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


※グループ化された内容は、「$1」で表示させることが可能。「( )」の数によって$1、$2、$3...と増えていく。一時記憶させたくない場合は、「 ( 」を「 (?: 」とするとよい。

・文字列の先頭に一致[編集]

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

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

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

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

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


・文字列の末尾に一致[編集]

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

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

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

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

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


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

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

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

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

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

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


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


・指定された文字以外の文字にマッチ(否定)[編集]

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

[解説] 「 [ 」のすぐ後に「 ^ 」を入れることで、「 [ ] 」の中に指定した文字以外の文字にマッチすることができます。これを「否定」といいます。

[文例] 特定の文字以外の文字を正規表現で一致させる。

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

置換前の指定 ⇒ [^タカシマヤ限定]


※否定では、「 [ ] 」の中に記述されている文字の1文字ずつ(「タ」「カ」「シ」「マ」「ヤ」「限」「定」)を精査します。そのため、必ずしも連続した文字列のみにマッチするわけではありません。今回の例文の場合、「タカシマヤ限定」で使っているそれぞれの文字が他でも使われていると、その文字も否定される(マッチしない)ことになります。

・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回以上繰り返すメタキャラクタです。しかし、「 *? 」は「 * 」と違い「できる限り短くマッチさせる」ように振舞います。逆に「 * 」は「できるかぎり長くマッチさせる」ように振舞います。

[文例] リンクのみを置換する。

 文字列(例):
<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="(.*)"」であれば、「 " 」の後で最初の「 " 」を発見した時点でマッチをやめます。


・否定の先読み[編集]

◆メタキャラクタ⇒ (?!正規表現) (半角カッコ + クエスチョンマーク + エクスクラメーションマーク + 正規表現(または文字) + 半角カッコ)

[解説] 「 (?!正規表現) 」とは、指定した「正規表現(または文字)」が存在しない場合にマッチするメタキャラクタのこと。

[文例] 「タカシマヤ限定」の文字が存在しない文字列を正規表現で一致させる。

 文字列(例):
人気のラムカン・ダムールにタカシマヤ限定のローズピンクが新登場。
一人前の前菜やサラダ、ソースや薬味、デザートなどの盛り付けにぴったりです。かわいいハート型は、小物入れにしても素敵です。

置換前の指定 ⇒ ^((?:(?!タカシマヤ限定).)*)\r\n


※一時記憶した内容は、$1で参照可能です。今回の場合は、「一人前の前菜や」から「素敵です。」までが一時記憶されています。



■ 目的別逆引き リファレンス[編集]



サクラエディタの正規表現[編集]

サクラエディタで正規表現を使用する際は、必ず「正規表現」にチェックを入れてください。