2011-02-07 3 views
3

나는 C#에서 KB/아약스 /와 Ajax 정규식 클래스와/C#으로 정규 표현식에 유용한 데이터를 추출하는 방법

<a href="/KB/ajax/" id="ctl00_MC_TCRp_ctl01_TSRp_ctl01_TSNL">Ajax</a> 

가 지금은 싶어하는 문자열을 가지고있다.

아무도 도와 줄 수 있습니까?

덕분에 많은

건배

+0

문자열 및 당신이 당신 대신에 대한 XML 파서를 사용하는 것이 좋습니다 – vmg

+1

을 얻고 싶은 제공 :$는 배열과 일치합니다. 이것이 그들이 원하는 것입니다. –

답변

2
string url = "<a href=\"/KB/ajax/\" id=\"ctl00_MC_TCRp_ctl01_TSRp_ctl01_TSNL\">Ajax</a>"; 

Regex finder = new Regex("href=\"([^\"]*)\""); 
string first = finder.Match(url).Groups[1].Value; 

finder = new Regex(">([^<]*)<"); 
string second = finder.Match(url).Groups[1].Value; 
+0

간단하고 정확하고 좋은 직장 :) – Franva

+0

누구든지이 대답을 설명해 주실 수 있습니다. – Nikhil

0

다음 정규식도 <a>...</a>로 둘러싸인 텍스트 내부 태그 수 :

<\s*a\b[^>] href\s*=\s*['"]([^"']*)['"][^>]*>((?:.(?!</a))*.)</a 

C# .NET 코드 예제 :

using System; 
using System.Text.RegularExpressions; 
namespace myapp 
{ 
    class Class1 
    { 
     static void Main(string[] args) 
     { 
      String sourcestring = "source string to match with pattern"; 
      Regex re = new Regex(@"\<\s*a\b[^\>]+href\s*=\s*['""]([^""']*)['""][^\>]*\>((?:.(?!<\/a))*.)\<\/a"); 
      MatchCollection mc = re.Matches(sourcestring); 
      int mIdx=0; 
      foreach (Match m in mc) 
      { 
      for (int gIdx = 0; gIdx < m.Groups.Count; gIdx++) 
       { 
       Console.WriteLine("[{0}][{1}] = {2}", mIdx, re.GetGroupNames()[gIdx], m.Groups[gIdx].Value); 
       } 
      mIdx++; 
      } 
     } 
    } 
} 
(
    [0] => Array 
     (
      [0] => <a href="/KB/ajax/" id="ctl00_MC_TCRp_ctl01_TSRp_ctl01_TSNL">Aj<b>a</b>x</a 
     ) 

    [1] => Array 
     (
      [0] => /KB/ajax/ 
     ) 

    [2] => Array 
     (
      [0] => Aj<b>a</b>x 
     ) 

) 
+0

매우 강력한 reg exp, 그리고 MatchCollection을 사용하는 법을 배웠습니다, 감사합니다 Daniel :) – Franva

관련 문제