C#正則表達式(Regex類)用法實例總結

前言

最近學是C#的窗口應用開發編程,然後我在網站搜瞭一個早上,結果大多數是有一些基礎的才看得懂,像對與我這個小白,看瞭半天都看不懂

最後,還是請教瞭大神,把我教會瞭

下面就我對C#的正則表達式的一些總結,第一次寫博客,哈哈哈哈,寫的不好請見諒,各位大佬們,愛你們。

1.正則表達式的概念

什麼是正則表達式?

英文Regular Expression,是計算機科學的一一個 重要概念,她使用一種數學算法來解決計算機程序中的文本檢索,匹配等問題,正則表達式語言是一種專門用於字符串處理的語言。在很多語言中都提供瞭對它的支持,C#也不例外,它可以幫我們解決下面的問題:例如賬號、密碼的驗證等等、

1.1正則表達式的組成

正則表達式就是由普通字符以及特殊字符(成為元字符)組成的文字模式。該模式描述在查找文字

1.1.1元字符是什麼

所謂元字符就是指那些在正則表達式中具有特殊意義的專用字符,可以用來規定其前導字符(即位於元字符前面的字符)在目標對象中的出現模式。

1.1.2定位元字符

字符 說明

  • \b 匹配單詞的開始或結束.
  • \B 匹配非單詞的開始或結束
  • ^匹配必須出現在字符串的開頭或行的開頭
  • $匹配必須出現在以下位置: 字符串結尾、字符串結尾處的\n之前或行的結尾。
  • \A 指定匹配必須出 現在字符串的開頭(忽略 Mutiline 選項)。
  • \z指定匹配必 須出現在字符串的結尾(忽略 Multiline選項)。
  • \z指定匹配必須出現在字符串的結尾或字符串結尾處的\n之前(忽略Multilie選項)。
  • \G 指定匹配必須出現在上- -個匹配結束的地方。與Match.NextMatch() -起使用時,此斷言確保所有匹配都是連續的。

1.2三個括號😳

在正則表達式中有3種類型的括號

他們分別是:方括號、花括號、圓括號、(簡稱方花園)😁

方括號“[“和花括號“{“●

方括號"[“內是需要匹配的字符,

花括號”{"內是指定匹配字符的數量。

圓括號“(“ :表示用來分組的。

插入符號“入”:表示正則式的開始

美元符號“$” :表示正則式的結束

1.3簡化正則表達式

實際命令 快捷命令
[0-9](數字) d
[a-z][0-9][_](數字、字母、下劃線) W
0次或多次發生 *
至少一次發生 +
0次或1次發生 ?

1.4@符號的作用

我們經常在正則表達式字符串上加@字符,目的就是為瞭,不讓編譯器去解析其中的轉義字符,,而作為正則表達式語法(元字符)存在。

在這裡插入代碼片

1.5正則表達式可以實現四種功能:

因為我看到其他博客說C#有很多方法可以用正則表達式,然後下面的一些例子,都用的是我認為,比較簡單的方法。大神勿噴,┗|`O′|┛ 嗷~~

溫馨提示:要運用下面的一些語句的要引入

using System.Text.RegularExpressions的命名空間

1,獲取:通過正則表達式,從字符串中獲取我們想要的部分

Regex reg = new Regex("[0-9]*");//這是搜索匹配0-9的數字
Console.WriteLine(reg.Match("12asda"));//最後提取出瞭12成功,嘻嘻

2,匹配:判斷給定的字符中是否符合正則表達式的過濾邏輯 你可以認為正則表達式表述瞭一個字符串的書寫規則

在這裡的就得用從開頭到結尾都為的數字為True,出現一個不為數字輸出False
Regex reg = new Regex("^[0-9]*$");//判斷整個字符串是否都為數字
Console.WriteLine(reg.IsMatch("12asda"));//最後輸出False
Console.WriteLine(reg.IsMatch("124536346"));//最後輸出True

3, 分割

1、用字符串分隔: 
using System.Text.RegularExpressions;
string str="aaajsbbbjsccc";
string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);
foreach (string i in sArray) Response.Write(i.ToString() + "<br>");


輸出結果:
aaa
bbb
ccc
2、用多個字符來分隔:
string str="aaajbbbscccjdddseee"; 
string[] sArray=str.Split(new char[2] {'j','s'}); 
foreach(string i in sArray) Response.Write(i.ToString() + "<br>"); 
輸出結果:
aaa
bbb
ccc
ddd
eee
3、用單個字符來分隔:
string str="aaajbbbjccc";
string[] sArray=str.Split('j');
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
輸出結果:
aaa
bbb
ccc

4, 替換

string s = "aaa12342525";
Regex r = new Regex("[0-9]");//正則表達式規則
Console.WriteLine(r);//這個輸出為 [0-9] (我也不知道具體的原理)😭
s = r.Replace(s, "9", 1);//第一個參數是字符串,第二個是正確匹配字符串的時候要替換的字符,第三個參數就是正確匹配正則表達式,然後替換的次數
Console.Write(s);//輸出aaa92342525

2.常用的正則表達式方法

2.1靜態方法IsMath

1,靜態方法IsMatch

IsMath(返回值是一個佈爾類型,用於判斷指定的字符串是否與正則表達式字符中匹配,它有三個重載方法)

bool IsMatch(string input, string pattern);

參數:

input: 要搜索匹配項的字符串。

pattern:要匹配的正則表達式模式。

返回結果:如果正則表達式找到匹配項,則為true;否則,為false。

bool IsMatch(string inpdt, string pattern, RegexOptions options);

參數:

input: 要搜索匹配項的字符串。

pattern:要匹配的正則表達式模式。

options:枚舉值 的一一個按位組合, 這些枚舉值提供匹配選項。

返回結果:如果正則表達式找到匹配項,則為true;否則,為false。

bool IsMatch(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);

參數:

input: 要搜索匹配項的字符串。

pattern:要匹配的正則表達式模式。

options:枚舉值的一個按位組合,這些枚舉值提供匹配選項。

matchTimeout:超時間隔

System.Text.RegularExpressions.Regex.InfiniteMatchTimeout 指示該方法不應超時。

返回結果:如果正則表達式找到匹配項,則為true;否則,為false。

2.1.1 關於參數RegexOptions

它是一個枚舉類型,有以下枚舉值

RegexOptions枚舉值          內聯標志         簡單說明
ExplicitCapture               n           隻有定義瞭命名或編號的組才捕獲
IgnoreCase                    i           不區分大小寫
IgnorePatternWhitespace       x           消除模式中的非轉義空白並啟用由#標記的註釋。
MultiLine                     m           多行模式,其原理是修改瞭^和$的含義
SingleLine                    s            單行模式,和Multiline相對 

2.2靜態方法Match

Match的作用:使用指定的匹配選項在輸入字符串中搜索指定的正則表達式的第一個匹配項。返回一個包含有關匹配的信息的對象。同樣有三個重載方法,參數和IsMatch方法相同。

此外,在Regex類中, 還有一個同名的非靜態方法,適用於多個實例的情況下,效率更高- – 些。

下面的關於Match的三個重載方法

  • Match Match(string input, string pattern);
  • Match Match(string input,string pattern, RegexOptions options); input,
  • Match Match(string string pattern, RegexOptions options, TimeSpan matchTimeout);

2.3靜態方法Matchs

靜態方法Matches,在指定的輸入字符串中搜索指定的正則表達式的所有匹配項。跟上面方法不同之處,就是這個方法返回的是所有匹配項,他同樣有三個重載方法,並且參數和Match方法完全相同此外,在Regex類中,還有一個同名的非靜態方法,適用於多個實例的情況下,效率更高- -些。

2.4 Replaces函數

我們知道正則表達式主要是實現驗證,提取,分割,替換字符的功能.Replace函數是實現替換功能的.

1 )Replace(string input,string pattern,string replacement)

//input是源字 符串,pattern是匹配的條件,replacement是替換的內容,就是把符合匹配條件pattern的內容轉換成它

比如string result = Regex.Replace("abc", "ab", "#" );
➢//結果是#c,就是把字符串abc中的ab替換成#

2 )Replace(string input,string pattern,string replacement,RegexOptions options)

//RegexOptions是- 一個枚舉類型,用來做- -些設定

//前面用註釋時 就用到瞭RegexOptions.IgnorePatternWhitespace.如果在匹配時忽略大小寫就可以用

RegexOptions.lgnoreCase
比如string result = Regex.Replace("ABc", "ab", “#" ,RegexOptions.lgnoreCase);

補充:在 Regex 類中使用 IsMatch 方法判斷所匹配的字符串是否滿足正則表達式的要求

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("請輸入一個郵箱");
        string email = Console.ReadLine();
        Regex regex = new Regex(@"^(\w)+(\.\w)*@(\w)+((\.\w+)+)$");
        if (regex.IsMatch(email))
        {
            Console.WriteLine("郵箱格式正確。");
        }
        else
        {
            Console.WriteLine("郵箱格式不正確。");
        }
    }
}

總結

到此這篇關於C#正則表達式(Regex類)用法的文章就介紹到這瞭,更多相關C#正則表達式用法內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: