1. 程式人生 > 其它 >在C#中使用正則表示式最簡單的方式

在C#中使用正則表示式最簡單的方式

更新記錄
本文遷移自Panda666原部落格,原發布時間:2021年5月11日。

在.NET中使用正則表示式與其他語言並無太大差異。最簡單的使用就是使用Regex型別自帶的靜態方法。
注意:在.NET中使用正則表示式記得引用名稱空間:

using System.Text.RegularExpressions;

檢測正則是否匹配成功

使用Regex.IsMatch方法即可,該方法返回一個bool值。
提示:在本文最底下有完整的例項。
例項程式碼:

if(Regex.IsMatch(beMatch, pattern))
{
    Console.WriteLine("匹配成功");
}
else
{
    Console.WriteLine("請檢查程式碼");
}

使用正則匹配單個字串

使用Regex.Match方法即可,該方法返回一個Match型別例項。
提示:在本文最底下有完整的例項。
例項程式碼:

Match result1 = Regex.Match(beMatch, pattern);

使用正則匹配多個字串

使用Regex.Matches方法即可,該方法返回一個MatchCollection型別例項。
提示:在本文最底下有完整的例項。
例項程式碼:

MatchCollection result2 = Regex.Matches(beMatch, pattern);

完整例項程式碼

using System;
using System.Text.RegularExpressions;
 
namespace RegexTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //被匹配的字串
            string beMatch = @"https://www.panda666.com|
https://panda666.com|panda666|666|panda";
            //匹配模式
            string pattern = @"(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?";
 
            //檢測是否匹配成功
            if(Regex.IsMatch(beMatch, pattern))
            {
                Console.WriteLine("匹配成功");
            }
            else
            {
                Console.WriteLine("請檢查程式碼");
            }
 
            //獲得匹配的內容(單個)
            Console.WriteLine("獲得匹配的內容(單個)");
            Match result1 = Regex.Match(beMatch, pattern);
            Console.WriteLine(result1.Value);   //匹配到的值
            Console.WriteLine(result1.Success); //匹配是否成功
            Console.WriteLine(result1.Index); //匹配到的起始位置
            Console.WriteLine(result1.Length); //匹配到的值的長度

            //獲得匹配內容(多個)
            Console.WriteLine("獲得匹配內容(多個)");
            MatchCollection result2 = Regex.Matches(beMatch, pattern);
            foreach (Match item in result2)
            {
                Console.WriteLine(item.Success);
                Console.WriteLine(item.Value);
                Console.WriteLine(item.Index);
                Console.WriteLine(item.Length);
            }

            //wait
            Console.ReadKey();
        }
    }
}