2014-09-24 3 views
0

내가 내가 내가 정규식을 사용하여 값으로 SRC를 얻기 위해 노력하고정규식은

<iframe width="420" height="315" src="//www.youtube.com/embed/8GRDA1gG8R8" frameborder="0" allowfullscreen></iframe> 

데이터베이스에서 당기는하고 값이 인용한다.

Regex.Match(details.Tables["MarketingDetails"].Rows[0]["MarketingVideo"].ToString(), "\\\"([^\\\"]*)\\\"").Groups[2].Value 

나는 현재를 쓰고있다 어떻게

가 어떻게이 SRC의 정확한 값을 끌어 작성합니다 ? 다른 사람이 이미 귀하의 질문에 댓글을대로 당신은 이런 식으로 그것을 할 수

+0

왜 여기서 정규식을 사용 하시겠습니까? is는 XML 구조를 가지고 있으므로'XDocument' 인스턴스에 전달하지 않으시겠습니까? –

+1

[Obligitory "regex로 html을 구문 분석하지 마십시오"링크 (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags). 실제로, 대신 html 파서를 사용하십시오. – gunr2171

+0

Ofcourse, 이것은 HTML, 어리 석다. 최근 XML로 작업 해 왔습니다. 실제로 HTML 파서를 사용하는 것이 좋습니다. –

답변

1

....

Match match = Regex.Match(@"<iframe width=""420"" height=""315"" src=""//www.youtube.com/embed/8GRDA1gG8R8"" frameborder=""0"" allowfullscreen></iframe>", @"src=(\""[^\""]*\"")"); 

Console.WriteLine (match.Groups[1].Value); 

그러나 ... 그것은 실제 HTML 파서를 사용하는 것이 더 좋습니다.

1

xml 또는 html을 구문 분석하기 위해 regex를 사용하지 마십시오. 그것은 가치가 없어. 나는 this post을 읽게하고, 그 점을 excerates의 일종,하지만 염두에 두어야 할 주된 것은 당신이 정규식과 html로 많은 문제가 될 수 있다는 것입니다.

대신 html/xml 파서를 사용해야합니다. 우선, .net 프레임 워크에 내장 된 클래스 인 XElement을 사용하십시오.

string input = "<iframe width=\"420\" height=\"315\" src=\"//www.youtube.com/embed/8GRDA1gG8R8\" frameborder=\"0\" allowfullscreen=''></iframe>"; 

XElement html = XElement.Parse(input); 
string src = html.Attribute("src").Value; 

src이 값 //www.youtube.com/embed/8GRDA1gG8R8을 만들 것입니다. 그런 다음 원하는 것을 얻을 수 있도록 분할 할 수 있습니다.

입력 내용이 xml이 아닙니다. allowfullscreen에는 값이 첨부되어 있지 않으므로 =''을 추가 한 것입니다.

입력과 같이 좀 더 복잡하게해야하는 경우 HTML 구문 분석기 (XElement은 xml 용)를 사용하십시오. (앞의 예를 사용하여)이 같은 Html Agility Pack을 사용

HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml(input); 

string src = doc.DocumentNode 
    .Element("iframe") 
    .Attributes["src"] 
    .Value; 

이 파서는 유효하지 않거나 올바르지 않은 (또는 불규칙한) 입력에 대한 더 관대하다. 이렇게하면 원래 입력을 잘 해석 할 수 있으므로 (=''이 누락 됨).

+0

http://msdn.microsoft.com/en-us/library/ie/dn312070(v=vs.85).aspx Microsoft에 따르면 allowfullscreen은 존재할 때 true이고 존재하지 않을 때 false이며, 할당 할 가치가 없습니다. – Zack

+0

@Zack, 원본 파서를 정확하게 파싱 할 html 파서가 포함되도록 업데이트되었습니다. – gunr2171

+0

HTML 민첩성 팩에 대한 링크를 추가 하시겠습니까? http://htmlagilitypack.codeplex.com/ – Zack