正規表現について
ご利用ガイド担当チーム
正規表現とは
正規表現とは、さまざまな文字列の集合を一つの文字列で表現する方法です。
文字列の検索や置換、抽出などを行う際の対象の指定のために用いられます。たとえば、「xxx.com/aaa1」「xxx.com/aaa2」・・・のような URL を、個別に指定するのではなく、一つの文字列で記述したい場合などに用います。
正規表現で使用する文字
. ^ $ [ ] * + ? | ( )
基本的な正規表現の使い方
記号 |
説明 |
記述例 |
当てはまる文字列の例 |
. |
改行以外のあらゆる1文字を表す。 |
Spr.cket |
Sprocket、Spracketなど |
+ |
その直前の文字を1回以上繰り返す場合にマッチする。 |
Spro+cket |
Sprocket、Sproooocketなど |
* |
その直前の文字を0回以上繰り返す場合にマッチする。 |
Spro*cket |
Sprcket、Sproooocketなど |
? |
その直前の文字を0回か1回の場合にマッチする。 |
Spro?cket |
Sprcket、Sprocket |
+? |
その直前の文字を1回以上繰り返す場合にマッチする。最短一致。 |
Spro+?cket |
Sprocket、Sprooocketなど |
*? |
その直前の文字を0回以上繰り返す場合にマッチする。最短一致。 |
Spro*?cket |
Sprcket、Sprooocketなど |
?? |
その直前の文字を0回か1回の場合にマッチする。最短一致。 |
Spro??cket |
Sprcket、Sprocket |
\ |
正規表現をエスケープする。 |
Sprocket\? |
Sprocket? |
{n,m} |
繰り返しの回数を指定する。 |
Spro{2,4}cket |
Sproocket、Sproooocketなど |
(n|m) |
いずれかの文字が入っている。 |
Spro(c|d)ket |
Sprocket、Sprodket |
[nm] |
いずれかの文字が入っている。 |
Spro[cd]ket |
Sprocket、Sprodket |
[^n] |
指定した文字以外の文字が入っている。 |
Spro[^c]ket |
Sproaket、Sprobketなど |
^ |
直後の文字が先頭にある場合にマッチする。 |
^Sprocket |
^Sprocket… |
$ |
直前の文字が末尾にある場合にマッチする。 |
Sprocket$ |
…Sprocket$ |
[ページ指定]で自動的に付与される正規表現
ステップの表示URLや行動データの条件で[ページ指定]を選択すると、自動的に正規表現が生成され、末尾に付与されます。これは「URLに『?』や『#』から始まるパラメータやアンカーが付いた場合でも、条件に一致すると見なす」という意味の正規表現です。末尾の文字によって、付与される正規表現は異なります。
なお、[ディレクトリ指定]の場合は部分一致で判定されますので、正規表現がなくてもすべてのパラメータやアンカーが対象となります。
よく使う正規表現の例
URL の末尾に index.html やパラメータが付くものも対象に含める場合
具体例 |
「https://www.sprocket.bz/」の後ろに index.html やパラメータがついても対象としたい |
記述方法例 |
(index\..*|default\..*)?(\?.*)?(#.*)?$ |
記述例 |
//www.sprocket.bz/(index\..*|default\..*)?(\?.*)?(#.*)?$ |
URL の末尾にパラメータが付くものも対象に含める場合
具体例
|
「https://www.sprocket.bz/category/book.html」の後ろにパラメータがついても対象としたい |
記述方法例 |
(\?.*)?(#.*)?$ |
記述例 |
//www.sprocket.bz/category/book.html(\?.*)?(#.*)?$ |
特定のディレクトリだけを対象とする場合
具体例
|
「https://www.sprocket.bz/AAA」か「https://www.sprocket.bz/BBB」か「https://www.sprocket.bz/CCC」のいずれかの場合のみ対象としたい |
記述方法例 |
(AAA|BBB|CCC) |
記述例 |
//www.sprocket.bz/(AAA|BBB|CCC)$ |
URL の末尾にスラッシュが入っても入らなくても対象とする場合
具体例 |
「https://www.sprocket.bz/ABC」または「https://www.sprocket.bz/ABC/」のいずれかを対象としたい |
記述方法例 |
/? |
記述例 |
//www.sprocket.bz/ABC/?$ |
スマートフォンと PC でドメインが異なるが、両方とも対象とする場合
具体例 |
「https://www.sprocket.bz/」または「https://www.sprocket_sp.bz/」でも対象としたい |
記述方法例 |
(_sp)? |
記述例 |
//www.sprocket(_sp)?.bz/ |
本番環境と検証環境でドメインが異なるが、両方とも対象とする場合
具体例 |
「https://www.sprocket.bz/」または「https://www.sprocket_test.bz/」でも対象としたい |
記述方法例 |
(_test)? |
記述例 |
//www.sprocket(_test)?.bz/ |
特定のディレクトリ配下で、除外条件を設定したい場合
具体例 |
「https://www.sprocket.bz/shop/配下」かつ「「https://www.sprocket.bz/shop/sale/」は対象外にしたい |
記述方法例 |
(?!.*sale).*$ |
記述例 |
//www.sprocket.bz/shop/(?!.*sale).*$ |
ディレクトリの途中で商品IDなどが入っていても対象に含めたい場合
具体例 |
「https://www.sprocket.bz/item_id/XXXXX/shop/」のXXXXXの部分にどんな商品ID(ここでは5桁の数字)が入っても、すべて対象に含めたい |
記述方法例 |
[0-9]{5} |
記述例 |
//www.sprocket.bz/item_id/[0-9]{5}/shop/ |
複数のディレクトリ配下で、除外条件を設定したい場合
具体例 |
「https://www.sprocket.bz/ABC配下」および「https://www.sprocket.bz/EGF配下」の場合を対象外としたい |
記述方法例 |
(?!/ABC)(?!/EDF) |
記述例 |
//www.sprocket.bz(?!/ABC)(?!/EDF)([^\?]*)?(\?.*)?(#.*)?$ |
複数の URL パラメータが入っていた時に対象としたい場合
具体例 |
「https://www.sprocket.bz」の後ろに「param1=val1」「param2=val2」の二つのURLパラメータを含む場合を対象としたい |
記述方法例 |
(?=(;[^?]*)?(\?|\?.*&)param1=val1(&.*|#.*|$)) |
記述例 |
//www.sprocket.bz/(?=(;[^?]*)?(\?|\?.*&)param1=val1(&.*|#.*|$))(?=(;[^?]*)?(\?|\?.*&)param2=val2(&.*|#.*|$))
|
Sprocket では、計測したい行動データの定義を行う時や、接客シナリオの開始ページ URL を設定する時に、正規表現で記述することが必要になる場合があります。
設定したい内容に合わせてどのような正規表現を記述すればよいかわからない場合は、担当コンサルタントまでご相談ください。