正規表現 (REGEX または REGEXPとも呼ばれます) は、特定のパターンに一致する URL またはテキストを見つけるのに役立ちます。
REGEXの仕組み
最も単純な例からより高度な例に移行しましょう。
次の設定は、単語「ブログ」を含むすべてのURLを含み、「商品」を含むURLを除外します。
これは私たちのボットにクロールを指示します:
https://ahrefs.com/blog
https://ahrefs.com/blog/seo-technologes/
https://ahrefs.com/academy/blogging-for-busunes
そして無視するには:
https://ahrefs.com/blog/category/product-blog/
https://ahrefs.com/blog/ecom/ecom/ecom/ecommerce-out-stock-products/
それは簡単でしたよね?
しかし、/blog/サブフォルダーのURLを特に含めたいが、https://ahrefs.com/academy/blogging-for-business
は除外したい場合はどうでしょうか?
もう少し高度なパターンを使用できます。
「ブログ」の前後にこれらの記号が何であるか疑問に思うかもしれません。
正規表現では、特殊文字として認識されないように、いくつかの記号を "エスケープ" にする必要があります。 これを行うには、文字の前にバックスラッシュ \
を使用します。
A simple dot .
in the regex, means for any character. しかし、 \.
は 完全停止 シンボルとして機能します。 上記の例のスラッシュ文字を次のようにエスケープしたのはそのためです: \/
Ahrefsが複数のREGEX式を処理する方法
サイト監査のクロール設定にURLを含めるか除外するには、複数のパターンを適用することができます。 いずれかのルールに一致するものが見つからない場合、ルールはスキップされます。
上記のルールは、クローラーに単語を含むURLをクロールするように指示します。
“blog” または “product”
および単語を含まないでください:
“blogging” または “productive”
複数の URL 書き換えルールの場合、前回の書き換えの結果に対して新しいルールが順番に実行されます。
いくつかの便利なRegexトークン
^
- このシンボルはURLの先頭を示します
$
- このシンボルはURLの終わりを示します
.
- 小数点はすべての単一文字に一致します
*
- 前の式 0 以上に一致する
+
- 1つ以上に一致する
?
- 前の0または1に一致
|
- はORと等価です。
[__]
- は|と似ていますが、範囲の定義に使用できます
(__)
- 括弧の間で正規表現をグループ化します
\d
- 1桁に一致する
\D
- 数字でない1つに一致する
\w
- 単語文字に一致
\W
- 単語でない文字に一致する
さまざまなツールやプラットフォームが異なるregexライブラリを使用している可能性があります。 当社のサイト監査は、 RE2 を使用しています。 その完全な構文はこちらで見つけることができます。
いくつかの実用的な例
1. /wp-content/ サブフォルダ内の Https URL
^https:.*\/wp-content\'
^
は、URL の開始を示します。 このルールは「https:」で始まるすべてのURLと、「/wp-content/」の前に「0」から任意の数の文字 .*
に一致します。
パターンに一致するURL:
https://ahrefs.com/blog/wp-content/uploads/2019/03/fb-ranking-1-image-1.png
URL がパターンに一致しません:
http://ahrefs.com/blog/wp-content/uploads/2019/03/fb-ranking-1-image-1.png
2. ディレクトリURL自体を含むサブフォルダ内のURL。
\/blog(\/.*)?$
このルールは、$
で終わり、「/blog」に続き、オプションでスラッシュと0以上の任意の文字(\/.*)?
が続くすべてのURLに一致します。 このパターンの クエスチョンマーク は、0 から 1 回の括弧内の式と一致し、 オプションの になります。
パターンに一致するURL:
https://ahrefs.com/blog
https://ahrefs.com/blog/301-redirects/
URLがパターンに一致しません:
https://ahrefs.com/blogging
https://ahrefs.com/academy/blogging-for-business
3. @ または % 記号を含む URL
@|%
または [@%]
|
と [__]
は OR として働きます
パターンに一致するURL:
https://ahrefs.com/@timsoulo
https://ahrefs.com/%D1%81%D0%B5%D0%BE
URLがパターンに一致しません:
https://ahrefs.com/blog/nofollow-links
4. Woocommerce の "カートに追加" URL
\?add-to-cart=
?
は正規表現の特別なシンボルであることを覚えておいてください。 単純な疑問符として使用するには、次のようにエスケープすることを忘れないでください: \?
パターンに一致するURL:
https://yourdomain.com/?add-to-cart=25
URLがパターンに一致しません:
https://yourdomain.com/スマートフォン
5. 年を含むURL (4桁)
[0-9]{4}
または \d{4}
[0-9]{4}
は 4 つの {4}
桁の [0-9]
を含むすべてのURLに一致します
\d{4}
は \d
は 1 桁を表します
パターンに一致するURL:
https://yourdomain.com/best smartphones-2019
URLがパターンに一致しません:
https://yourdomain.com/スマートフォン
6. サブドメインのすべてのURL(httpとhttpsの両方)
^https?:\/\/help.ahrefs.com
このルールは "http://help.ahrefs.com" または "https://help.ahrefs.com " で始まるすべてのURLに一致します。
ここでの疑問符s?
は「s」がオプションであることを示しているので、httpとhttpsの両方がこのルールに一致します。
パターンに一致するURL:
https://help.ahrefs.com
http://help.ahrefs.com/
http://help.ahrefs.com/site-audit
URLがパターンに一致しません:
https://ahrefs.com/site-auture
ftp://help.ahrefs.com
7. 様々なファイルURL
\.(jpg|gif|bmp|png|css|pdf)$
このルールは、$
で終わるすべてのURLに一致し、.jpg または .gif または .bmp または .png または .css または .pdfとなります。
この式を減らして、より少ない数のエクステンションをターゲットにすることができます。 例えば、 $
を .jpg または .png のみが使用できます。
.*\.(jpg|png)$
括弧 (__)
は、それらと |
はORを表します。
パターンに一致するURL:
https://ahrefs.com/blog/wp-content/uploads/2019/03/fb-ranking-1-image-1.png
http://ahrefs.com/blog/wp-content/uploads/2019/03/fb-ranking-1-image-1.png
URLがパターンに一致しません:
https://ahrefs.com/site-auture
8. サイト監査でステージングウェブサイトをクロールするためにURL書き換えルールを使用する
format@@0 設定で URL リライトルールを使用して、URL の一部を別の値に置き換えることができます。
例えば、 あなたのステージングウェブサイトがサブドメインに基づいている場合、例えば、 staging.ahrefs.com
このルールはURLごとに"ahrefs.com"を"staging.ahrefs.com"に置き換えます。
9. 番号付きのキャプチャグループでURL書き換えルールを使用する
グループをキャプチャすると、URL の複数の部分を 1 つのルールで置き換えることができます。
一致するパターン:
www\.ahrefs\.com([^\?|#]*)?([#]?[^\?]*)\??(.*)
置換先:
www.ahrefs.com\1?parameter1=5273&\2?parameter2=7465&\3
([^\?|#]*)
は最初のキャプチャグループです
([#]?[^\?]*)
は2番目のキャプチャグループです
(.*)
は3番目のキャプチャグループです
\1?parameter1=5273&\2\3
第 1 キャプチャグループの値を "?parameter1=5273
" に置き換えます。
\2?parameter2=7465&
は第2キャプチャーグループの値を "?parameter2=7465&
" に置き換えます。
\3
は第 3 キャプチャグループに一致する値を挿入します。
6. 50文字を超えるテキストのフィルター
^[\s\S]{50,}$
その他のリソース
私はこの記事があなたが正規表現で行うことができるいくつかのクールなトリックを学ぶのに役立つことを願っています。
このウェブサイトでRegexをテストできます: https://regex101.com/. 左側のメニューから“Golang” を選択する必要があります。