2012-04-13 6 views
0

私は、(1)他のHTML文書、(2).jpg、.pngなどの画像ファイルへのリンクを抽出しようとしている様々なHTML文書があります。 .bmp。私はこれを行うために正規表現が必要であり、それを理解するように見えることはできません。 =右SRC = "画像/ sample001を揃える:;:画像とHTML文書を抽出する正規表現が必要です


IMGのスタイル= "20ピクセルは、MARGIN-BOTTOM:MARGIN-LEFT 20ピクセル"

htmlページのそれぞれには、次のようなコードを持っています。 JPG ">

IMGのスタイル=" MARGIN-BOTTOM:25ピクセル; MARGIN-LEFT:25ピクセル画像 "=右SRC =を合わせ "/ sample002.png">

IMGのスタイル=" MARGIN-BOTTOM:20ピクセル;マージン左:20ピクセル "align = right src =" images/sample003.bmp ">

"

href =" javascript:parent.POPUP( "testDoc001.htm"、タイプ: '共有'、幅:600、高さ:645) {URL: 'testDoc002.html'、タイプ: '共有'、幅:700、高さ:712}) ">例として


は、正規表現は、上記のHTML上で動作し、得られたを生成しますアレイ:

画像/ sample001.jpg

画像/ sample002.png

画像/ sample003.bmp

testDoc001.htm

testDoc002.html

誰かが私を助けることはできますか?本当にありがとう。

答えて

1

HTMLを正規表現で解析しようとすると、欲求不満とバグがありません。 HTML Agility PackのようなHTMLパーサを使用してください。

+0

私は正規表現とHTML [ほとんど一緒に行く](http://stackoverflow.com/a/1732454/89391)に同意しますが、私は正規表現によるリンク抽出のようなものはOKだと思います。 – miku

+0

@miku:私が経験したことは、あなたがテストしたものの小さなサブセットでも動作させることができるということです。そして、いくつかの新しい構成体が来て、それを壊します。私は、HTMLパーサーを使用すると、より早くコードを実行できるようになり、結果はより信頼性が高く、変化する条件にも対応できるようになりました。しかし、あなたの走行距離は変わるかもしれません。 –

0

たぶんイメージのため(グループを使用して)線に沿って何か:ポップアップ用

IMG[^>]*src="([^"]*)" 

と、このような何か:

url:'([^']*)' 
+0

私は自分のコードに入れます:パターン= @ "IMG [^>] * src = '([^'] *) '"; と戻って何も得られなかった。私は置く:パターン= @ "url: '([^'] *) '";それは私に与えた: "url: 'testDoc001.htm'"と "url: 'testDoc002.thml'"この正規表現を洗練する方法についてのアイデア? –

+0

目の前に:どの言語を使用していますか? – miku

+0

私はC#、WPF、VS2010を使用しています –

0

(Perl)

my $x = "your html"; 

#$1 - is a first group in match - (.+\.(jpg|png)) 
while ($x =~ /<img .* src="(.+\.(jpg|png))"/ig) { 
    print "$1\n"; 
} 

while ($x =~ /<a(.)* href=".*url:('|")(.+\.htm(l)?)('|").*/ig) { 
    print "$3\n"; 
} 

出力:

images/sample001.jpg 
images/sample002.png 
testDoc001.htm 
testDoc002.html 

正規表現<img .* src="(.+\.(jpg|png))"<a(.)* href=".*url:('|")(.+\.htm(l)?)('|").*は、ほとんどの言語で類似しています。 igは、検索で大文字と小文字を区別しないで複数の一致があると定義しています

関連する問題