正規表現とは文字列のパターンを表現する手法です。
Curl言語は Perl プログラミング言語の高レベルの正規表現構文を採用しており、多くの異なる種類のデータ抽出やレポート作成タスクに適しています。
正規表現を Curl 言語で使用するためには、import を使用して正規表現パッケージをインポートする必要があります。具体的には CURL.LANGUAGE.REGEXPパッケージをインポートすることで正規表現の比較 regexp-match? マクロが使用できるようになります。
| {import * from CURL.LANGUAGE.REGEXP} |
では、具体的な正規表現の方法を見てみましょう。ここでは、[開発者ガイド-逆引きリファレンス-イベント-バリデーションチェック]のサンプルコードで使用している正規表現を使って説明します。
| {define-enum PhoneValidationPattern ||携帯電話を含む正規表現 ja-phone-number = |”(0dd?-?d{4}-?d{4})|((0dd?)d{4}-d{4})|(0d{3}-dd-d{4})|(0dd-d{3}d?-d{4})|(0dd?(d{4})d{4})”| } |
| 構文 | 意味 |
| ((0dd?)d{4}-d{4})|(0d{3}-dd-d{4}) |
|(パイプ)で区切られた左右どちらかの正規表現を含む文字列とマッチします。 |
| d | 1つの数値とマッチします。 |
| d{4} | 4つ連続した数値とマッチします。 |
| d? | 数値がない、あるいは1つの数値とマッチします。 |
| -? | -を含まない、あるいは1回含む部分文字列とマッチします。 |
| ( | (を認識させるために (エスケープシーケンス)をつけています。 |
以下は、リファレンスです。
一文字のマッチング-ワイルドカード使用による正規表現
| 構文 | 意味 |
| . |
改行文字以外の任意の文字とマッチします。 |
| d | 任意の数字とマッチします。 |
| D | 数字以外の任意の文字とマッチします。 |
| s | 任意の空白文字とマッチします。 |
| S | 空白以外の任意の文字とマッチします。 |
| w | 単語を構成する任意の文字とマッチします。 |
| W | 単語を構成する文字以外の任意の文字とマッチします。 |
繰り返しを含むマッチング
| 構文 | 意味 |
| regexp* | regexp (正規表現) を 0 回以上連続して含む部分文字列とマッチします。 |
| regexp+ | regexp を 1 回以上連続して含む部分文字列とマッチします。 |
| regexp? | regexp を含まない、あるいは 1 回含む部分文字列とマッチします。 |
| regexp{m,n} | regexp を m 回以上、n 回以下連続して含む部分文字列とマッチします。 |
| regexp{m,} | regexp を m 回以上連続して含む部分文字列とマッチします。 |
| regexp{n} | regexp を n 回連続して含む部分文字列とマッチします。 |
文字列内の任意の位置に対するマッチング
| ^ | 行頭の直前の空白とマッチします。 |
| $ | 行末の直後、または文字列の末尾の改行の直前の空白とマッチします。 |
| A | 文字列の先頭の直前とマッチします。 |
| Z | 文字列の末尾の直後、または文字列の末尾の改行の直前とマッチします。 |
| z | 文字列の末尾の直後とマッチします。 |
| b | 単語の境界、つまり単語を構成する任意の文字とそれ以外の文字の間の空白とマッチします (文字列の先頭と末尾の範囲外にある存在しない文字は、単語を構成しない文字として扱われます)。 |
| B | b とマッチしない任意の空白とマッチします。 |
正規表現に関しては、IDEの[Curl開発者ガイド→基本概念-ライブラリ→正規表現]で実際に文字列を操作しながら確認することが最も理解が深まると思いますので、IDEを持っている方は、ぜひ試してみてください。