2012-11-06 22 views
1

HTML 코드에서 문자열을 추출하는 데 문제가 있습니다 (기본적으로 정규 표현식의 문제입니다). 코드는 다음과 같습니다.문자열에서 값 추출

string wheretosearch = @" 
<td class=""name""> 
<div> 
<a href=""/addr1.html"" class=""link ""> 
<span>Title1</span> 
</a></td> 

[some code] 

<td class=""name""> 
<div> 
<a href=""/addr2.html"" class=""link ""> 
<span>Title2</span> 
</a></td>"; 

태그 사이에 제목을 추출하고 싶습니다. 어떤 내 문제 것은 내가 정규식에서 문자의 알 수없는 숫자를 넣을 수 없다는 것입니다 (* TD 클래스 = ""이름 ""다음 섹션을 참조하십시오.) :

<td class=""name"">.*<span>(?<title>.*)</span> 

은 단순히 물건을 넣어 : 나는 정규식 <td class=""name""> 다음을 찾으려면 알 수없는 문자 수를 찾은 후 첫 번째로 <span>을 찾은 다음 첫 번째 문자 인 <span></span> 사이의 값을 가져옵니다.

실제로는 <span>의 마지막 항목을 취하고 마지막 제목 만 제공합니다.

편집 :처럼

좋아, HTML 문제 이외의 문제가된다. NICE이 좋은 텍스트는 다음과 같습니다

"이것은 텍스트입니다 : 내가 문자열있어 : 좋았어. "

다음 "알 수없는 문자"를 입력하고 ":"과 "."사이의 문자열을 사용하고 싶습니다. 어떻게 할 수 있니?

물론 나는 복잡한 표현의 각 경우에 관심이 있습니다. 따라서 출력은 컬렉션에서 "좋은"과 "좋은"이 될 것입니다.

"This.*(?<title>.*)."과 같은 식으로는 @urlreader가 언급 한 것처럼 "NICE TOO"문자열 만 얻습니다. 일치하는 문자열의 최대 길이를 찾습니다.

+7

에헴 ... http://stackoverflow.com/questions/1732348/regex-match-open-tags : 혹시 C#에서 정규식에 필요한

모든 here

편리한 도구입니다 -except-xhtml-self-contained-tags/1732454 # 1732454 – driis

+3

html 구문 분석을 위해 regex를 사용하는 것은 좋지 않습니다. [Html Agility Pack] (http://htmlagilitypack.codeplex.com/)을 사용하십시오. – Steve

+0

+1은 민첩성 팩으로 작동하며 꽤 잘 작동합니다. 거의 모든 쓰레기를 던집니다. – flq

답변

1
<td class=""name"">.*?<span>(?<title>.*)</span> 

정규 표현식이 최대 길이 일치 문자열을 찾으려고하기 때문입니다. 당신이 마지막에 점을 탈출해야 기억

This[\w|\s]*: (?<title>[\w|\s]+)\. 

:

+0

HTML 문제 외에도 확인해 주셔서 감사합니다. " 이것은 텍스트입니다 : 좋은, 훌륭한 텍스트입니다 : NICE TOO. " "이"다음에 알 수없는 문자 수를 입력하고 ":"과 "."사이의 문자열을 가져오고 싶습니다. 어떻게이 작업을 수행 할 수 있습니까? – Jarzyn