2017-05-11 17 views
-2

長い文字列のパターンの後に文字列を抽出しようとしています。これは基本的にページのHTML出力です。パターンの後の正規表現の一致文字

たとえば、私は、この文字列からのhrefタグのターゲットを抽出する必要が

<h2 class=\ "product-name\"><a href=\"/erkek-ayakkabi-spor-gri-17sfd3007141340-p\" title=\"...">...</a></h2>\r\n 

私はこのことから必要なもの:erkek-ayakkabi-SPOR-GRI-17sfd3007141340-P

しかし、また、私は1つに似て文字列を検索する必要があります上記。だから、の後ろのhrefタグをHTML文字列で検索する必要があります。

どうすればこの問題を解決できますか?

+0

[C#でhtmlを解析する最善の方法は何ですか](http://stackoverflow.com/questions/56107)を参照してください。 –

+0

私は既に書かれたコードに取り組んでいます、ちょっとした変更をするだけです。私は今、htmlを解析する方法を根本的に変える時間がありません。多分後で。 –

答えて

1

これを確認してください。

正規表現:

class=\"product-name\"(.*)<a\shref=\"(.*?)\" 

更新正規表現:

class=\"product-name\".*<a\shref=\"(.*?)\" 

Regex101 Example

C#コード:

using System; 
using System.Text.RegularExpressions; 

public class Program 
{ 
    public static void Main() 
    { 
     string data = "<h2 class=\"product-name\"><a href=\"erkek-ayakkabi-spor-gri-17sfd3007141340-p\" title=\"...\">...</a></h2>\r\n<h2 class=\"test-name\"><a href=\"erkek-ayakkabi-spor-gri-17sfd3007141340-p\" title=\"...\">...</a></h2>\r\n<h2 class=\"product-name\"><a href=\"erkek-ayakkabi-spor-gri-17sfd3007141340-p\" title=\"...\">...</a></h2>\r\n"; 
     //string regex = "class=\"product-name\"(.*)<a\\shref=\"(.*?)\""; 
     string regex = "class=\"product-name\".*<a\\shref=\"(.*?)\""; 
     var matches = Regex.Matches(data, regex, RegexOptions.Multiline); 
     foreach(Match item in matches) 
     { 
      //Console.WriteLine("Value: " + item.Groups[2]); 
      Console.WriteLine("Value: " + item.Groups[1]); 
     } 
    } 
} 

DotNetFiddle Example

+0

くそー、文字通りちょうど同じコードを書きました... :) – Webbanditten

+0

それはいいです..... ..... – csharpbd

+0

なぜ最初のグループが必要ですか? –

関連する問題