2009-03-13 2 views
3

는이 같은 링크 내 데이터베이스에서 웹 페이지 내용의 무리를 가지고 :일부 텍스트에서 모든 Guid를 어떻게 찾을 수 있습니까?

<a href="/11ecfdc5-d28d-4121-b1c9-1f898ac0b72e">Link</a> 

그 가이 드 고유 식별자가 동일한 데이터베이스에 다른 페이지의 ID입니다.

해당 페이지를 크롤링하고 끊어진 링크가 있는지 확인하고 싶습니다.

 
Function FindGuids(ByVal Text As String) As Collections.Generic.List(Of Guid) 
    ... 
End Function 

내가이 정규 표현식에 대한 작업임을 알 :

내가 한 페이지에 모든 GUID 목록을 반환 할 수있는 기능이 필요하다는 것을 수행합니다. 그러나 구문을 알지 못합니다.

답변

8
 
Function FindGuids(ByVal Text As String) As List(Of Guid) 
    Dim Guids As New List(Of Guid) 
    Dim Pattern As String = "[a-fA-F0-9]{8}-([a-fA-F0-9]{4}-){3}[a-fA-F0-9]{12}" 
    For Each m As Match In Regex.Matches(Text, Pattern) 
     Guids.Add(New Guid(m.Value)) 
    Next 
    Return Guids 
End Function 
2

깨진 링크를 확인하는 쉬운 방법은 예를 들어 내가 http://www.totalvalidator.com/ 그것을 할 것이라 생각합니다 .... 있습니다 : D

이것은 또한

static Regex isGuid = 
    new Regex(@"^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$", RegexOptions.Compiled); 

다음

static bool IsGuid(string candidate, out Guid output) 
{ 
bool isValid = false; 
output=Guid.Empty; 
if(candidate!=null) 
{ 

if (isGuid.IsMatch(candidate)) 
{ 
    output=new Guid(candidate); 
    isValid = true; 
} 
} 
return isValid; 
을 도울 수

}

+0

보기에 편리합니다. 그러나이 웹 사이트의 많은 페이지에는 로그인이 필요하며 내가 처리해야하는 다른 비즈니스 규칙이 있습니다. –

+0

전체 유효성 검사기 (고급)도 인증을 수행합니다! – inspite

+0

나는 이것이 실제로 Pro (고급 버전이 아닌) 버전이라고 생각한다. – inspite

8

[0-9a-f {0-9a-f] {4} - [0-9a-f] {4} - [0-9a-f] {12}

3

expresso 무료 사본을 준비하고 빌드하는 방법을 제안하십시오! 여기

은, 아니 최적화와 10 번째 시도의 대문자와 소문자를 확인하고 번호를 캡처 그룹을 생성합니다 ... 그리고

([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}) 

방금 ​​일치하는 그룹을 통해 반복 할 필요를

관련 문제