문제

데이터베이스에 다음과 같은 링크가있는 웹 페이지 컨텐츠가 많이 있습니다.

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

해당 GUID 고유 식별자는 ID입니다 또 다른 동일한 데이터베이스의 페이지.

그 페이지를 기어 다니고 깨진 링크를 확인하고 싶습니다.

그렇게하려면 페이지의 모든 안내서 목록을 반환 할 수있는 함수가 필요합니다.

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

나는 이것이 정규 표현의 직업이라고 생각합니다. 그러나 나는 구문을 모른다.

도움이 되었습니까?

해결책

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

다른 팁

0-9A-F] {8}-[0-9A-F] {4}-[0-9A-F] {4}-[0-9A-F] {4}-[0-9A-F ] {12}

무료 사본을 가져 오십시오 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})

그런 다음 매치 된 그룹을 통해 반복해야합니다 ...

깨진 링크를 확인하는 더 쉬운 방법이 있습니다 .... 예를 들어 생각합니다. 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;

}

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top