メインコンテンツへスキップ

正規表現の使用方法

概要

A-Parserでは、Perl/JavaScript互換の正規表現が採用されており、以下の場面で使用できます:

正規表現に関する詳細なドキュメントは、以下のリソースで確認できます:

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::HTTPNet::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
サンプルをダウンロード

A-Parserへのサンプルのインポート方法


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 で始まるように指定します。

取得した正規表現を完全にテストするために、必要なフラグ gsi を有効にすることができます。

また、2つ以上のグループを持つ、より複雑な正規表現を作成することも可能です。 例として、<li> リスト内のすべてのリンクとアンカーを収集する正規表現を作成してみましょう。この場合、g フラグを有効にし、第1グループにリンク、第2グループにアンカーが入るように、もう一つの検索グループを追加する必要があります。

正規表現コンストラクターでのグループ使用例

両方のグループに必要なパラメータを設定すると、次の正規表現が得られます:

<li><a href="(.+?)">(.+?)<\/a

正規表現をチェックするには、テスト ボタンをクリックしてください:

正規表現コンストラクターでの作成した正規表現のチェック

正規表現の実行後、下部に結果が表示されます:完全な文字列とキャプチャされたグループです。結果テーブルの任意の要素をダブルクリックすると、元のテキストがその一致箇所までスクロールされます。