2017-05-11 2 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

뿐만 아니라 내가 하나에 모두 문자열을 찾을 필요 위. 그래서 HTML 문자열에서 class=\ "product-name\" 뒤에 href 태그를 검색해야합니다.

어떻게하면됩니까?

+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

왜 첫 번째 그룹이 필요합니까? –