2022年1月30日日曜日

c#で正規表現

 リンク抽出のための正規表現を考えてみた。あらためて、正規表現の使い方を確認。

こちらのサイトが詳しかったです。これを参考にリンクのURLとその他の属性取得を考えてみました。いろいろ試行錯誤が必要でした。最短マッチについても、今回初めて知りました。

      public ISet<string> GetNewLinks2(string content)
        {           
          var regexAtag2 = @"<a\s+[^>]*href\s*=\s*[""'](?<href>[^""']*?)(?<rel>[""'].*?</a>)";
           ISet<string> newLinks = new HashSet<string>();
          var r = new Regex(regexAtag2, RegexOptions.IgnoreCase);
          var collection = r.Matches(content);
          string matchrel;
          foreach (Match m in collection)
          {
              string matchx = m.Groups["href"].Value.Trim();
               matchrel = m.Groups["rel"].Value;
                //filter//////////////属性に指定文字あるとパスするフィルタ
              if (atagExcludeL.Select(stt => matchrel.Contains(stt)).Any(bl => bl == true))
              {
                  continue;
              }
              if (!newLinks.Contains(matchx))
              {            
         newLinks.Add(matchx);
              }
          }
            return newLinks;
        }

リンクチェックには以下のサイトが参考になりました。

https://dobon.net/vb/dotnet/internet/httpstatuscode.html

0 件のコメント:

コメントを投稿