C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で正規表現を使ってURLを検証する方法

文字列が有効なURLかどうかを検証するには、まずプロトコルが正しく含まれているかを確認する必要があります。

http
https

さらに、.com、.in、.org などのトップレベルドメイン(TLD)が適切に指定されているかどうかもチェックします。

使用する正規表現

これらの条件をまとめて検証するには、次のような正規表現を使用します。

(http|http(s)?://)?([\w-]+\.)+[\w-]+[.com|.in|.org]+(\[\?%&=]*)?

この正規表現の各要素は以下の役割を持っています。

  • (http|http(s)?://)? … プロトコル部分(http または https)。省略も可能
  • ([\w-]+\.)+ … ドメイン名のラベル(英数字・アンダースコア・ハイフン+ドット)の繰り返し
  • [.com|.in|.org]+ … .com、.in、.org などのトップレベルドメイン
  • (\[\?%&=]*)? … クエリパラメータなどの付加情報(省略可能)

C#でのサンプルコード

以下は、C#で Regex.Matches メソッドを使ってURLを検証する実際のコード例です。

using System;
using System.Text.RegularExpressions;
namespace RegExApplication {
    class Program {
        private static void showMatch(string text, string expr) {
            Console.WriteLine("The Expression: " + expr);
            MatchCollection mc = Regex.Matches(text, expr);
            foreach (Match m in mc) {
                Console.WriteLine(m);
            }
        }
        static void Main(string[] args) {
            string str = "https://example.com";
            Console.WriteLine("Matching URL...");
            showMatch(str, @"^(http|http(s)?://)?([\w-]+\.)+[\w-]+[.com|.in|.org]+(\[\?%&=]*)?");
            Console.ReadKey();
        }
    }
}

実行結果

このプログラムを実行すると、入力文字列から正規表現に一致するURLが抽出され、コンソールに出力されます。

Matching URL...
The Expression: ^(http|http(s)?://)?([\w-]+\.)+[\w-]+[.com|.in|.org]+(\[\?%&=]*)?
https://example.com

このように、正規表現を活用すれば、プロトコルやドメインの形式を柔軟にチェックし、C#で簡単にURLの妥当性を検証することができます。

  1. Pythonの正規表現で単語以外の文字をマッチさせる方法

    正規表現を使って文字列から「単語以外の文字」を取り出したい場合、Pythonのreモジュールに用意されている特殊シーケンス \W を使うのが最も簡単です。\W は、英字・数字・アンダースコア([^a-zA-Z0-9_])以外のすべての文字に一致します。以下のコードでは、指定した文字列から単語以外の文字をすべて抽出し、そのリストを出力しています。コード例import re s = ab5z8d*$&Y@ regx = re.compile(r\W) result = regx.findall(s) print(result)ポイントとして、パターン文字列の先頭に r を付けて raw 文字列に

  2. 【Python】正規表現を使って文字列内の単語をマッチ・抽出する方法

    次のコードは、指定された文字列の中から「meeting」という単語を抽出します。ここでは肯定の先読み(look-ahead)と肯定の後読み(look-behind)アサーションを使用しています。これにより、単語を囲む文字の存在を条件として考慮しつつ、その文字自体はマッチ結果に含めないようにできます。コード例import re s = https://www.google.com/meeting_agenda_minutes.html result = re.findall(r(?<=[\W_])meeting(?=[\W_]), s) print(result)出力[meeting]パ