4

私のデータベースには、次のようなリンクを含む Web ページ コンテンツがたくさんあります。

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

その Guid の一意の識別子は、同じデータベース内の別のページの ID です。

それらのページをクロールして、壊れたリンクをチェックしたいと思います。

そのためには、ページ上のすべての Guid のリストを返すことができる関数が必要です。

Function FindGuids(ByVal Text As String) As Collections.Generic.List(Of Guid)
    ...
終了機能

これは正規表現の仕事だと思います。しかし、私は構文を知りません。

4

4 に答える 4

8

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

于 2009-03-13T20:30:53.513 に答える
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(新しい Guid(m.Value))
    次
    ガイドを返す
終了機能
于 2009-03-13T20:39:28.830 に答える
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})

次に、一致したグループを反復処理するだけです...

于 2009-03-13T20:33:36.673 に答える
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;

}

于 2009-03-13T20:29:01.990 に答える