2012-06-26 5 views
1

참고 :이 질문의 모든 인용 부호는 실제로 코드의 일부입니다.C에서 인용 부호로 인용 부호 사용 #

저는 정규 표현식을 배우고 있으며, 음악이있는 사이트를 긁어 내려고하고 있습니다. 사이트 원본을 'ytcmusic.txt'라는 텍스트 파일에 저장했습니다.

<li><a href="angelpool%20-%20know.mp3"> angelpool - know.mp3</a></li> 
<li><a href="angelpool%20-%20sellout.mp3"> angelpool - sellout.mp3</a></li> 
<li><a href="angelpool%20-%20time.mp3"> angelpool - time.mp3</a></li> 
<li><a href="bella%20-%20gibsons.mp3"> bella - gibsons.mp3</a></li> 

내가 예를 들어 첫 번째 줄을 사용합니다, 난 단지 "angelpool % 20 %의 20know.mp3"을 긁어하기 위해 노력하고있어 여기에 정규식 있다고 할 다음은 HTML의 샘플입니다 내가 사용 : ". *. mp3"------ 내가 C#에 넣을 때, 나는 그것을 인용 부호로 둘러 싸야한다. 이것은 정규 표현식에서 인용 부호를 파멸시킨다. 를 heres 코드 (당신이 정규식 따옴표 한 세트를 제거하는 경우는, 컴파일되지 않습니다, 그것은 않지만 분명히 소스의 정확한 부분을 반환 나던) : 사전에

var sr = new StreamReader("ytcmusic.txt"); 
     string str = sr.ReadToEnd(); 
     var match = Regex.Match(str, @".*.mp3"); 

감사합니다!

답변

3

이것은 내가 샘플 입력을 유지하고 제목을 인용 한 유일한입니다 있으리라 믿고있어

"[^"]*" 

참고 할 것입니다. 그렇지 않은 경우 정규식에 더 많은 컨텍스트를 추가해야합니다. 당신이 따옴표없이 캡처하려는 경우

당신은 내가 방법을 추가, 내가 멍청한 놈의 비트 해요,이

StringCollection resultList = new StringCollection(); 
Regex regexObj = new Regex("\"([^\"]*)\""); 
Match matchResult = regexObj.Match(subjectString); 
while (matchResult.Success) { 
    resultList.Add(matchResult.Groups[1].Value); 
    matchResult = matchResult.NextMatch(); 
} 
+0

죄송하게 C#에서 너무

"([^"]*)" 

처럼 괄호를 도입 할 수 내 코드에? 나는 여러 가지 방법으로 오류를 시도했다. 덕분에 – Lavi

+0

@ 라비 No prob, 일부 샘플 코드 – buckley

+0

+1로 답변을 업데이트했습니다. nice 대답 –

관련 문제