2017-07-27 8 views
1

内の情報を抽出するためにはgrepと正規表現を使用しますそれは何も言わなかった。私の間違いは何ですか?前もって感謝します!どのように私は、タグ内の情報を抽出しようとする特定のタグ

+0

のgrepと正規表現は、HTMLを解析するために使用するために完全に間違っているツールです...と正規表現は、あなたのケースのために十分に良好であれば'grep -oP'が必要です。それで' sed'や 'awk'を使ってください... grepは主にテキスト操作をしないためのものです – Sundeep

答えて

1

使用して、次の作品:

grep -Po "<div class=\"rpt_price rpt_price_1\">\K(.*)(?=</div>$)" 

-P-oオプションはunix stackexchangeで、ここで説明されています。 \Kunix stackexchangeで非常によく説明されています。

\K(.*)を使用すると、一致するテキストと次のテキストのみが出力されます。 (?=...$)とすると、残りのテキストは除外されます。

試験:

echo "<div class=\"rpt_price rpt_price_1\">THE TEXT</div>" | grep -Po "<div class=\"rpt_price rpt_price_1\">\K(.*)(?=</div>$)" 

出力:

THE TEXT 

別の可能性は、直接perlを使用することで、説明をhere on superuserある:

perl -ne 'print $1 if /\<div class="rpt_price rpt_price_1">(.*?)\<\/div>/s' 

テスト:

echo "<div class=\"rpt_price rpt_price_1\">THE TEXT</div>" | perl -ne 'print $1 if /\<div class="rpt_price rpt_price_1">(.*?)\<\/div>/s' 

出力:、

THE TEXT 
+0

私はパラメータ '-Po'を試しましたが、' grep:私はiOS環境(端末)にあるので、-pオプションのサポートは--disable-perl-regexpバイナリにコンパイルされていません。 –

+0

@ GregorIsack:私の拡張答えを見るなら 'perl'にアクセスできますか? –

+0

私のデバイスに 'perl'をインストールしたところ、完全に動作します!しかし、perlパッケージは私のデバイスの限られたストレージ容量を消費しています。より良い答えがない場合は、これを答えとしてマークします。お手伝いありがとう! –

1

</div>の最後の/をエスケープしていません。

正しい正規表現は次のようする必要があります。正規表現については

^<div class=\"rpt_price rpt_price_1\">.*<\/div>$

thisは、1つを作成しているとき、あなたの結果がどうなるかをテストするのに最適なツールです。

+0

まだ正規表現はありません。あなたの訂正が動作します!私は 'curl'と思われ始めました –

+1

正規表現がうまくいけば、それはあなたが探しているものと一致します。カールをチェックさせてください。どのようなウェブサイトをターゲットにしていますか? – dirtydanee

+0

この正規表現は機能しますが、部分だけを捨てることはありません: 'テキスト'しかし全体の表現。 –

関連する問題