2012-11-08 7 views
-1

웹 페이지의 모든 데이터 소스를 가진 변수가 있습니다. 단어, 문자열, 특수 문자 등이 많은 큰 문자열입니다.거대한 문자열의 거대한 덩어리에서 특정 문자열의 부분을 어떻게 추출합니까?

이 변수를 통해 티켓 번호를 추출하고 싶습니다. /와 .json 앞의 티켓입니다. 다음과 같은 경우, 내 목록은 15

https://company.zendesk.com/api/v2/tickets/15.json 

이 웹 페이지의 텍스트를 많이들 사이에서이 링크의 배수를해야합니다 값을 단 1 개의 될 것입니다. 다음과 같은 경우, 내 목록은이 개 항목이 것, 값 19 나는이 거대한 파일이 링크에서 바로 티켓 번호를 추출하고 목록에 넣어 가겠어요 어떻게 20

https://company.zendesk.com/api/v2/tickets/19.json blahblahblajlkdfjfaiofjd3289239lkdj 
2398283j;lkjfe89j2pefj2efljefkj 
https://company.zendesk.com/api/v2/tickets/20.json blah blhahblbahlhkaldk 

?

Regex를 사용합니까? 어떻게 접근해야하는지 잘 모르겠다.

참고로이 페이지에는 형식이 없습니다. 그것은 XML 문서 나 다른 것 같지 않습니다.

감사합니다. 이 같은

+0

정규 표현식을 사용하여 가양 성을 피하기 위해 가능한 한 구체적으로 작성해야합니다. 실제로 많은 텍스트 대신 웹 페이지를 얻는다면, 그것을 파싱하고'a' 엘리먼트의'href '만 보길 원할 것입니다. –

답변

1

뭔가 당신이 "https://company.zendesk.com/api/v2/tickets/ D + .json \"@

 string pattern = @"https://company.zendesk.com/api/v2/tickets/\d+.json"; 
     Regex regex = new Regex(pattern); 
     MatchCollection mc = regex.Matches("input string here"); 

     foreach(Match m in mc) 
     { 
      Console.Write(m.Value); 
     } 

작업을 시작할 수해야한다

굵게 표시된 부분을 메모하십시오. @은 리터럴 문자열이라는 것을 의미하므로 \을 이중 탈출 할 필요가 없습니다. \ d은 모든 숫자의 대문자입니다. +은 이전 문자가 한 번 이상 나타남을 의미합니다. *은 번 이상 발생한다는 것을 의미합니다. 여기

당신이 학습과 http://msdn.microsoft.com/en-us/library/az24scfc.aspx

그냥 티켓 번호를 얻을 수있는 패턴을 사용자 정의 할 수있는 방법에 대한 참조, 당신은 괄호 안에
https://company.zendesk.com/api/v2/tickets/(\d+).json"

"\d+"를 넣을 수 있습니다 다음 경기라는 속성이됩니다 Groups 티켓 번호는 FIL 수 있으며, 해당 그룹

그 시점에서
  Console.Write(m.Groups[i].Value); 

중 하나가 될 것입니다 문자열 길이를 포함하여 다양한 추론법을 사용하는 그룹의 티켓 번호에서 전체 일치 그룹을 추출하거나 다른 정규식을 사용할 수 있습니다.

관련 문제