2012-04-24 24 views
0

正規表現の経験豊富な人の助けを借りたいと思います。私はハイパーリンクの値を解析したいhtmlコードを持っています。ページ全体から コードは、以下の添付HTMLで見つけることができます:正規表現をHTMLコードから解析するための正規表現

http://dl.dropbox.com/u/4571235/example.html

は私が文書内の各「価格を比較」ボタンの後にハイパーリンクを取得したいです。

すべてのアドバイスを歓迎します。 Laziale

+3

たぶん、最初にこれを読んで:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

答えて

1

チェックhereに事前に感謝します。

このコード試してみてください。

public static bool isValidUrl(ref string url) 
{ 
    string pattern = @"^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*[^\.\,\)\(\s]$"; 
    Regex reg = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); 
    return reg.IsMatch(url); 
} 
+0

は、私はそれらのリンクだけを取得したいです価格比較ボタン用。フォーム上のすべてのリンクではありません。それは可能ですか?ありがとう – Laziale

0

を私は他のURLは、ソースコードでもあることを確認 - 私は、次の正規表現を提案することができますが、それは各「価格を比較」のテキストがされている場合にのみ正しく動作しますあなたが興味を持っているURLが直接続いています(つまり、「正しい」URLの間に他のURLがない場合)。一致するURLがない '価格比較'テキストがある場合、正規表現はいくつかのルールに基づいて変更する必要があります。

value="Compare prices"(?:.*?)<a\s+href="([^"]*?)" 

は、URLが一致するグループ1

+0

おそらく、このように ' Compare prices ' – sln

+0

私の悪い、無視のコメント – sln

0

通常のリンクは、「タグ」である、または「リンク」または「IMGのSRC =」URL」になります。
の場合a hrefタグでは、有効なa hrefをチェックして、初心者のためだけに検証を実行することができます。
0.最初にボタンが含まれているフォームですべての内部HTMLを取得します。
1.さらに検査のためにhrefタグをつかみなさい... pattern = "< a [^ >] * >"またはタグのそれぞれのパターン= "<リンク[^ >] * > "またはパターン=" < IMG [^ >] * >"
2.次にチェックしたリンク、srcとHREFタグ
3を引き出しURLが有効かどうかを確認します。
注:ステップ0を実行できる場合は、特定の型のすべての属性を取得してから、その上で正規表現を実行することができます。

関連する問題