0

このURLをbash/またはPHPで抽出する簡単な方法はありますか?

http://shop.image-site.com/images/2/format2013/fullies/kju_product.png

このHTMLコードから?

<a href="javascript: open_window_zoom('http://shop.image-site.com/image.php?image=http://shop.image-site.com/images/2/format2013/fullies/kju_product.png&pID=31777&download=kju.png&name=13011 KELLYS Kju: 490mm (19.5&quot;)',550,366);">
4

4 に答える 4

2

ではbash、次のことを試すことができます。

sed 's/.*image=\(http:\/\/[^&]*\).*/\1/g'

更新:
上記のソリューションは、抽出ではなく置換を実行します。パターン (必要な URL) を含む行は、パターン自体に置き換えられます。ただし、置換は適切ではありません。

于 2013-02-27T22:50:22.497 に答える
2

perl を使用すると、マッチとキャプチャを行うことができます

perl -n -e 'print "$1\n" if (m/image=(.*?)\&/);'

image=これにより、 と next の間のすべてがキャプチャされ&、出力され$1ます。

正規表現の詳細については、perlreまたはhttp://www.regular-expressions.info/を参照してください。

于 2013-02-27T22:54:27.670 に答える
1

どちらの方法でドレスアップする場合でも、単純に区切り文字 equal to?image=で分割し、受け取った 2 番目のトークン (つまりresult[1]) を単純な&区切り文字で分割することができます。その分割の最初の結果があなたの答えです。

ただし、純粋な正規表現の一致は次のようになりますm#image=(a-z0-9\:/\.\-)&#i。その正規表現を取得して、結果を に保存したい場所に配置できます$1。多くの人が考えていることにもかかわらず、結果を一致させるために行頭と行末を一致させる必要はありません。

于 2013-02-27T22:52:32.477 に答える
1

これをやってみてください:

xmllint --html --xpath '//a/@href' file://file.html |
    grep -oP 'image=\Khttp://.*?\.png'

ローカル ファイルの代わりに URL を使用できます。

http://domain.tld/path

$stringまたは、変数で解析する行を既に抽出している場合:

grep -oP 'image=\Khttp://.*?\.png' <<< "$string"
于 2013-02-27T22:55:28.703 に答える