2011-12-24 2 views
1

Regex - 모든 href 및 innerText를 가져 옵니까? C#에서

은 내가 URLs 텍스트 파일에서 InnerTexts, 나는 내가 그렇게 만 정규식을 사용하고있는 장치 (만 텍스트 파일)에 DOM 개체에 액세스 할 수없는 두 얻기 위해 노력하고 있어요 사용.

<a href="/LinkClick.aspx?fileticket=a random text string">I want this text</a> 

내가 텍스트 파일에 걸쳐 모든 설정해야합니다 : HTML을 구문 분석

URL = /LinkClick.aspx?fileticket=a random text string 
TITLE = I want this text 
+2

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – Joe

+2

RegEx를 사용하여 데이터를 구문 분석하는 것은 좋은 생각이 아닙니다. HTML 텍스트 파일이 있다면 DOM에 액세스 할 수 있습니다. 예를 들어 "using System.Windows.WebBrowser ... HtmlDocument hdoc = HtmlPage.Document;" – paulsm4

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1758162#1758162 –

답변

0

정규식? 그 이론적으로 가능하지만, 당신이 멋지고 깨끗한 XHTML로 시작한다는 것을 확신 할 수 없다면 나는 이것으로 큰 성공을 거두지 못했습니다. 문제는 합법적 인 HTML이 항상 형성되지 않고 물건이 줄을 지어 HTML이지만 여전히 RegEx를 통과 할 수 있다는 것입니다. 나는 당신을 위해 HTML을 parset하는 라이브러리를 DOM 트리 또는 무언가로 만들고 XPATH를 결과 DOM을 통해 찾을 것을 추천한다. C#에는 HtmlDocument 클래스가 있습니까? 나는 RegEx에 의지하기 전에 그것을 시도 할 것이다. ,

\<a.+?href=(?<q>["'])(.+?)\k<q>.*?>([^\<]+) 

URL 그룹 2의 값이됩니다 및 TITLE

문서가 유효 XHTML 경우 그룹 3의 값이됩니다 :

+0

내가 언급했듯이 제한된 액세스 권한이 있으며 HTML을 구문 분석 할 수 없습니다. 다른 방법. 나는 서브 파워 디바이스 (sub-powered device)에서 리눅스로 돌리고있다. –

0

당신은이 같은 정규 표현식을 사용할 수 있습니다 System.Xml 네임 스페이스의 클래스를 사용하여 문서를 구문 분석 한 다음 모든 <a> 요소를 검색 할 수도 있습니다.

관련 문제