正規表現の使用方法
概要
A-Parserでは、Perl/JavaScript互換の正規表現が採用されており、以下の場面で使用できます:
- あらゆるサイトからの任意の情報のスクレイピング時
- クエリビルダーでのクエリの一部の抽出または置換
- 結果ビルダーでのあらゆる結果の変換
- フィルタの使用時
- 正規表現コンストラクターでの利用
- スクレイパー
Net::HTTP で次のページの可用性を確認する際
正規表現に関する詳細なドキュメントは、以下のリソースで確認できます:
A-Parserには、Parse custom results (正規表現を使用)オプションを使用して、あらゆる結果を正規表現で処理する機能があります:

使用上の特徴とフラグ
- 正規表現はデリミタ
//なしで記述します - 以下のフラグをサポートしています:
- i - 大文字小文字を区別せずに検索
- s - ドット(.)に改行を含むすべての文字を一致させる
- g - グローバル検索または置換
さらに、正規表現内でフラグを指定することも可能です。例えば、mフラグ(マルチライン - ^ と $ がそれぞれ行の先頭と末尾として機能する)を使用して、テキスト全体(またはページコード)の各行から単語 test を検索する場合:
(?m)^(.+?test.+?)$
任意の情報の抽出

Parse custom results (正規表現を使用)オプションまたは結果ビルダーを使用すると、HTMLページのソースコードや準備済みの結果から、正規表現を用いて任意の情報を抽出できます。
- Parse result (On) (適用先)には、スクレイパーからの結果を選択します。これは単一の結果または配列のいずれかです。
- 正規表現はデリミタなしで指定し、その後にフラグを指定できます。
- Result type (結果タイプ)には、結果のタイプ(
Flat(単一の結果)またはArray(配列))を指定します。元の結果として配列が選択されている場合、または正規表現の g フラグが使用されている場合、結果は常に配列に保存されます。Name (名前)フィールドには配列の名前を指定します。 - 正規表現の各キャプチャグループ(括弧)は個別の要素として保存でき、要素名は $1 to, $2 to... の対応するフィールドに記述します(数字はキャプチャグループの番号を表します)。
- RegEx (正規表現)フィールドではテンプレートエンジンを使用でき、クエリを正規表現の一部として利用することが可能です。
作成された新しい結果は、結果のフォーマット、結果ビルダー、フィルタリング、結果の重複排除、または次のParse custom results (正規表現を使用)オプションで使用できます。
このオプションは、RegEx Match を使用した際の見結果ビルダーと似ています。
HTMLソースコードからの画像リンク抽出例

この課題を解決するために、スクレイパー
Net::HTTP を使用してページのソースコードを取得します。
$data(ダウンロードされたページ)に対してフラグ isg を指定した正規表現を適用し、結果を配列 images の要素 src に保存します。
結果フォーマットでは、すべての src 要素を改行区切りで出力するように指定します。
/img/lang/en.png
/img/lang/en.png
/img/lang/ru.png
img/[email protected]
https://files.a-parser.com/img/site/tour_ru/V1qpV.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_all_parsers_list.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_quick_task.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_2_task_editor_easy.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_3_task_editor_analyze_domains.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_4_task_editor_parse_emails.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_5_queue_fast_google.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_6_queue_spyserp.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_7_javascript_parser.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_8_scheduler.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_9_settings.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_10_proxies.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_11_templates.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_12_task_tester.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_13_parser_test.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_14_api.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_15_resources.png
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/13/13392.jpg?1570706020
data/avatars/s/16/16560.jpg?1586782475
data/avatars/s/1/1240.jpg?1537376153
styles/uix/xenforo/avatars/avatar_s.png
data/avatars/s/0/371.jpg?1412969226
styles/uix/xenforo/avatars/avatar_s.png
//mc.yandex.ru/watch/26891250
サンプルをダウンロード
eJxtVN9v2jAQ/l8sJArqYH3YS7Stokhomxgwmj5BJlnkyLz612yHFUX533d2Egfa
vYDv7rvvvvNdXBFH7bPdGLDgLEl2FdHhTBKSw5GW3JFboqmxYHx4R1bgkuRLmm7Q
HxEVcWcNmHMorVNiC7ZJNM0BuaijwS7gBc2PTBS7n5+zsTWH/d6OP/mf3XBPspvJ
+H4UTh08bZiZLSJh66LG0DM6w/+KigATtAAbkV4zwSIkq3uR6gTGsBwQxXK0j8oI
6kwn+kR56WGDhmvShG+GgyBWDkekzrJYYBGiHq7vJu3dxeAjPUGqfAnGoXcv0Gr1
DvBmwEe7MqOJe/EMNM+ZY0pS3lTwnfRVnyT7E0RKhVg8GgZ2YZRAl4NA4J3nTt2O
DIJNkKIMuT+aHJIcKbdwSyxKXVAUkr+OMAeGOmXW2utBf0WUnHG+hBPwHhb4H0rG
c1yV2RGTvraJ/4es33DUsb3LUjisvwY1RJZgPay/91m5WqqiuwzOBHNo27kqpR/M
e3Q+A+h4ZysPE8pALNMyt9Xxa9Ag/Wb0I5vp3nXVxtVYrp0HJY+sWLfb1iFLmeIn
t5ZzJTQH35csOcexWNj26zGz7Ri80Qt8nTwPJa4+VqcUt98eG6naMFy/D16gwJu8
rNpSHijnT9vlZYT0K4XGL+e0TaZT+q55BiYHJabEJzooFK4UtlVn8ZGIT0l18VQk
VY1j+m03Dcb35BHow8uxOAOS3NX/AFJvlP8=
正規表現コンストラクター
バージョン 1.2.78 より、正規表現コンストラクターが追加されました。
Tools -> Regex Builder タブにあります。また、テストスクレイピングから直接ページの取得コードを送信することも可能です。そのためには、デバッグモードを有効にして Go to RegEx Builder リンクをクリックする必要があります。

コンストラクターでは、取得した正規表現を使用するプログラミング言語を選択できます。
コンストラクターを使用するには、左側のフィールドにソーステキストを貼り付けます(または、Go to Regex Builder をクリックした際に テストスクレイピング から自動的に挿入されます)。右側で、作成する正規表現のパラメータを設定します。
単純な正規表現(例:タイトルの取得など)を作成するには、正規表現の必要な要素を指定するだけで十分です。
- Before group (グループの前) フィールドには、必要な情報の直前にある文字列を入力します
- After group (グループの後) フィールドには、必要なデータの直後にある文字列を入力します
- グループの開始 フィールドには、検索文字列が始まるべき文字列を指定します
- Group ends with (グループの終了) フィールドには、検索文字列の最後にあるべき文字列を指定します

上のスクリーンショットのように、サイトの title を抽出する正規表現を作成します。グループの前に <title>、グループの後に </title> を設定し、例として検索文字列が文字 W で始まるように指定します。
取得した正規表現を完全にテストするために、必要なフラグ g、s、i を有効にすることができます。
また、2つ以上のグループを持つ、より複雑な正規表現を作成することも可能です。
例として、<li> リスト内のすべてのリンクとアンカーを収集する正規表現を作成してみましょう。この場合、g フラグを有効にし、第1グループにリンク、第2グループにアンカーが入るように、もう一つの検索グループを追加する必要があります。

両方のグループに必要なパラメータを設定すると、次の正規表現が得られます:
<li><a href="(.+?)">(.+?)<\/a
正規表現をチェックするには、テスト ボタンをクリックしてください:

正規表現の実行後、下部に結果が表示されます:完全な文字列とキャプチャされたグループです。結果テーブルの任意の要素をダブルクリックすると、元のテキストがその一致箇所までスクロールされます。
便利なリンク
🔗 初心者のための正規表現
私の名前は Vitaliy Kotov です。正規表現について少し知っています。この記事では、正規表現の使い方の基礎を解説します...
🔗 正規表現 (regexp) — 基礎
正規表現は、テキストの検索と置換のための仕組みです。文字列、ファイル、複数のファイルにおいて...
🔗 ⏩産業機器カタログのスクレイピング
産業機器カタログのスクレイピングにおける正規表現の使用例
🔗 ⏩Booking.com リソースのスクレイピング
Booking.com リソースのスクレイピングにおける正規表現の使用例
🔗 ⏩連絡先ページの検索
連絡先ページのスクレイピングにおける正規表現の使用例