日本ビジネス・サポート_ホーム
日本ビジネス・サポート_ホーム
トップページ

FileMakerプラグイン

正規表現とは

正規表現で文字列処理

正規表現とは特定の文字列をあるパターンで表す為の手段の一つです。
ワイルドカード(*とか?)が少し複雑になったモノと考えるとわかりやすいかもしれません。

正規表現サンプル
メールアドレスを抜き取りたいなら 正規表現

[a-z0-9._]+@[a-z0-9.-]+
『』で囲まれた文字を抜き取るなら 正規表現

『.+?』
なんとか会社なんとかだけ抜き取る 正規表現

(株式|有限)会社.+?\s
郵便番号を抜き取り 正規表現

〒\d{3}-?\d{4}
URLにリンクを付ける 正規表現

https?://[-_.!~()a-zA-Z0-9;/?:&=+%#]+
置換え文字

<a href=\"$&\">$&</a>
,(カンマ)で区切られた3つの文字列の
順番を入れ替える
正規表現

(.+),(.+),(.+)
置換え文字

$3,$2,$1

以下から正規表現について少し解説しますが、
この解説は意味がわからない!!!という場合は
Google等で「正規表現」と検索した方が幸せになれると思います。
Google検索 正規表現

正規表現で使用するパターン(ワイルドカードでいう*や?)を表現するための記号は以下表の通りです。
これらの記号と通常の文字を組み合わせて文字列のパターンを表現するのが正規表現です。
※他にもあると思いますが、これだけ知っていれば良いかなと思うものだけ書きました。

. 任意の1文字
* 直前の文字が0回以上繰り返す。(0回以上なので文字がない場合も一致)
+ 直前の文字が1回以上繰り返す。(1回以上なので文字がない場合一致しない)
? 直前の文字は省略可能。最短一致。
[ ] []の中でどれか1文字。
{} 直前の文字の回数指定での繰り返し
| いずれか
() グループ化。文字列を1文字として扱う
\r 行末($が使われる事もありますが、弊社プラグインの場合\rを使用して下さい。
※FileMaker内部の改行コードがCRの為\r)
$& マッチした文字列を取得(置き換え時に使用します)
$1とか$2とか 正規表現の中でグループ化した部分にマッチした文字列を取得(置き換え時に使用します)
\1とか\2とか 正規表現の中でグループ化した部分の文字を取得する(検索時に使用します)
(?=)や(?!)や(?<=)や(?<!) 後読み、先読みというやつです。

『.』について
.は1文字を表します。
正規表現検索で『.』とだけ入れると1文字が全て検出されるはずです。
『あ』も『都』も『@』でも1つの文字が全部マッチします。

『...』と入れると3文字の文字が全てマッチします。
『ふぁう』も『こんぶ』も『@@@』でも3つの文字の連続は全部マッチします。
3文字に満たない文字列の場合はマッチしません。


『*』と『+』について
*と+は正規表現では別の記号や文字と組み合わせて不特定の繰り返しを表現します。
『あ+』だと『あ』とか『あああ』とか"あ"が連続している場合にマッチします。何もない場合はマッチしません。
『あ*』だと『あ』とか『あああ』とか"あ"が連続している場合にマッチします。何もない場合もマッチします。

例えば
『【あ+】』とすると【】で囲まれた"あ"が連続している場合にマッチします。何も入っていない『【】』という文字にはマッチしません。
『【あ*】』とすると【】で囲まれた"あ"が連続している場合もマッチします。何も入っていない『【】』という文字にもマッチします。

これを最初の『.』と組み合わせて
『【.+】』とすると【】で囲まれている文字列を抜き出すことが出来ます。


『?』について
『?』は直前の文字はなくてもいい、又は最小一致の場合に使用します。
最小一致とは
『【.+】』とすると【】で囲まれている文字列を抜き出すと書きましたが
これだと『【その1】 1 【その2】 2』なんて場合に
『【その1】 1 【その2】』と抜き出されてしまいます。(最大一致)
これを『【その1】』『【その2】』と分けて抜き出すには
『【.+?】』とします。

直前の文字はなくてもいい
例えばURLでhttpだったりhttpsだったりするときに
『https?』とするとhttpもhttpsもマッチします。

[] について
[]は囲まれた文字のどれか1文字を表します。
『[0123456789]』とすると0から9までの数字1文字を表します。
(これは[0-9]、[\d]とも表現できます)

{}について
{}は{4}と数字を入れることで、この場合直前の文字の4回の繰り返しを表します。
{2, 4}とすると直前の文字の2回か4回の繰り返しを表します。
『w{3}』とすると"www"にマッチします。"w"や"wwww"にはマッチしません。

|について
|はいずれかという条件を表します。
例えば『a|b|c』とすると"a"か"b"か"c"という文字にマッチします。

()について
()は文字列をグループ化します。グループ化した文字は1文字(1パターン)として扱えます。
例えば『(はい|ダメ|無理)+』なんですると『はいはいはい』『ダメダメ』『無理無理無理』など全てにマッチします。

$&について
$&は正規表現でマッチした文字列を置換えテキストに含ませたいときに使用します。
例えばURLにリンクを付けたい場合『https?://[-_.a-zA-Z0-9/]+』などとして
置換え文字を『<a href=\"$&\">$&</a>』とすると全てのURLにリンクが付きます。

$1とか$2とか
$1や$2は正規表現の中でグループ化した部分の文字列を置換えテキストに含ませたい
$の後ろの数字はグループ化した部分の番号を表します。
例えば『(.+),(.+),(.+)』としてカンマ(,)で区切られた3つの文字列をそれぞれグループ化します。
置き換え文字を『$3,$2,$1』とすると3つの文字列の順番が逆になります。

\1とか\2とか
$1や$2は正規表現の中でグループ化した文字を再登場させたい場合使います。
\1で1番目のグループした部分、\2で2番目の・・・と取得できます。
例えば『新潟県新潟市』という文字にマッチさせたい場合に
『(新潟)県\1市』で取得できます。

(?=)や(?!)や(?<=)や(?<!)
これは先読み、後読みなんて呼ぶらしいです。
例えば『見ざる言わざる聞かざる』という文字列に対して
後読みを使って『(?<=言わ)ざる』とすると"言わざる"の"ざる"しか抽出されません。
抽出件数は1件だけになります。
後読みの否定もできて『(?<!言わ)ざる』とすると2件抽出されます。

正規表現で置き換えをするときなんかに
例えば仮に"新潟県新潟市"や"宮城県新潟市"や"福島県新潟市"なんていう住所が同じ文字列内にあったとします。
そこから"新潟県新潟市"以外の"新潟市"を置き換えたい場合に
『(?<!新潟県)新潟市』として置き換えると
『新潟県新潟市』以外の『新潟市』だけ置き換える事が出来ます。

後ろに出る文字は「?」前に出る文字は「?<」
「=」が肯定、「!」が否定です

正規表現についてもっと知りたいなんて場合は
やはり、Google等で「正規表現」と検索すると幸せになれると思います。
Google検索 正規表現

正規表現のサンプルなんかも検索するといくらでも出てくると思います。
Google検索 正規表現サンプル

文字列処理になんでも正規表現を使えばいいという話でもありませんが、
覚えておくと便利な場面が多いと思います。

プラグインのページへ戻る

button