欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#正則表達(dá)式的詳細(xì)使用說明(附示例代碼)

 更新時間:2025年07月21日 08:57:25   作者:生命不息-學(xué)無止境  
正則表達(dá)式是一種匹配輸入文本的模式,Net框架提供了允許這種匹配的正則表達(dá)式引擎,模式由一個或多個字符、運(yùn)算符和結(jié)構(gòu)組成,這篇文章主要介紹了C#正則表達(dá)式的詳細(xì)使用說明,需要的朋友可以參考下

正則表達(dá)式基礎(chǔ)概念

  • 正則表達(dá)式是一種用于匹配文本模式的工具。它是由普通字符(例如字母、數(shù)字)和特殊字符(稱為元字符)組成的字符串模式。在C#中,主要通過System.Text.RegularExpressions命名空間來使用正則表達(dá)式。
  • 元字符表格顯示
分類正則表達(dá)式字符描述示例
字符類.匹配除換行符之外的任意單個字符a.b可匹配aab、acb
[abc]匹配字符a、bc中的任意一個[abc]可匹配abc中的任意一個字符,如ab[abc]d可匹配abbd、abcd
[0-9]匹配任意一個數(shù)字字符,等同于\d[0-9]可匹配0-9中的任意一個數(shù)字,如a1b中的1
[a-z]匹配任意一個小寫字母字符[a-z]可匹配a-z中的任意一個小寫字母,如a[abcdef]b可匹配abc、abd
[^abc]匹配除ab、c之外的任意一個字符[^abc]可匹配除a、b、c之外的任意字符,如a1b中的1,a#b中的#
量詞*匹配前面的元素零次或多次ab*可匹配a、ab、abb
+匹配前面的元素一次或多次ab+可匹配ab、abb等,但不能匹配a
?匹配前面的元素零次或一次ab?可匹配aab
{n}匹配前面的元素恰好na{3}可匹配aaa
{n,}匹配前面的元素至少na{2,}可匹配aa、aaa
{n,m}匹配前面的元素至少n次且不超過ma{2,4}可匹配aaaaa、aaaa
特殊字符\d匹配任意一個數(shù)字字符,等同于[0-9]\d可匹配0-9中的任意一個數(shù)字,如a1b中的1
\D匹配任意一個非數(shù)字字符,等同于[^0-9]\D可匹配除數(shù)字以外的任意字符,如a#b中的a#、b
\w匹配任意一個字母、數(shù)字或下劃線字符,等同于[a-zA-Z0-9_]\w可匹配a-z、A-Z、0-9、_中的任意一個字符,如a1_b中的a、1、_
\W匹配任意一個非字母、數(shù)字或下劃線字符,等同于[^a-zA-Z0-9_]\W可匹配除字母、數(shù)字、下劃線以外的任意字符,如a#b中的#
\s匹配任意一個空白字符,包括空格、制表符、換頁符等a\sb可匹配a b,其中中間有一個空格
\S匹配任意一個非空白字符a\Sb可匹配a#b等,其中#是非空白字符
\b匹配一個單詞邊界\bcat\b可匹配單獨(dú)的單詞cat,但不能匹配category中的cat
\B匹配一個非單詞邊界\Bcat\B可匹配category中的cat,但不能匹配單獨(dú)的單詞cat
定位符^匹配輸入字符串的開始位置^abc可匹配以abc開頭的字符串,如abcdef
$匹配輸入字符串的結(jié)束位置def$可匹配以def結(jié)尾的字符串,如abcdef
轉(zhuǎn)義字符\轉(zhuǎn)義特殊字符,使特殊字符按字面意思匹配\.可匹配真正的句點(diǎn)字符.,而不是表示任意字符的.
分組與捕獲(...)字符類,匹配括號內(nèi)的任意一個字符,并將括號內(nèi)的內(nèi)容作為一個分組,可以通過Match.Groups獲取分組內(nèi)容(abc)可匹配a、bc中的任意一個字符,如a(abc)d可匹配aabd、aacd等,通過分組可獲取匹配到的具體字符
零寬斷言(?=...)正向肯定預(yù)查,用于查找后面跟著特定模式的位置,但不消耗字符\d(?=abc)可匹配后面跟著abc的數(shù)字,如1abc中的1
(?!...)正向否定預(yù)查,用于查找后面不跟著特定模式的位置,但不消耗字符\d(?!abc)可匹配后面不跟著abc的數(shù)字,如1def中的1
(?<=...)反向肯定預(yù)查,用于查找前面跟著特定模式的位置,但不消耗字符(?<=def)\d可匹配前面跟著def的數(shù)字,如def1中的1
(?<!...)反向否定預(yù)查,用于查找前面不跟著特定模式的位置,但不消耗字符(?<!def)\d可匹配前面不跟著def的數(shù)字,如abc1中的1
常用方法IsMatch判斷輸入字符串是否與正則表達(dá)式匹配,返回boolRegex.IsMatch("abc123", @"\d")返回true
Match在輸入字符串中查找第一個匹配項,返回Match對象,可通過Match.Value獲取匹配的值,Match.Index獲取匹配位置等Regex.Match("abc123", @"\d")可獲取到第一個數(shù)字1的相關(guān)匹配信息
Matches在輸入字符串中查找所有匹配項,返回MatchCollection集合,可遍歷獲取每個匹配項的信息Regex.Matches("abc123", @"\d")可獲取到所有數(shù)字1、2、3的匹配信息
Replace將輸入字符串中匹配正則表達(dá)式的部分替換為指定的字符串Regex.Replace("abc123", @"\d", "#")可將abc123替換為abc###
Split根據(jù)正則表達(dá)式將輸入字符串分割成字符串?dāng)?shù)組Regex.Split("a1b2c3", @"\d")可將字符串分割為{"a", "b", "c"}

在C#中使用正則表達(dá)式的基本步驟

  • 引入命名空間:在C#代碼中使用正則表達(dá)式,首先需要引入System.Text.RegularExpressions命名空間。例如:
using System.Text.RegularExpressions;
  • 創(chuàng)建正則表達(dá)式對象:使用Regex類來創(chuàng)建正則表達(dá)式對象??梢酝ㄟ^傳遞一個正則表達(dá)式模式字符串來創(chuàng)建。例如,要匹配一個簡單的電話號碼格式(假設(shè)電話號碼是數(shù)字,長度為7 - 8位),可以這樣創(chuàng)建:
Regex phoneRegex = new Regex(@"^\d{7,8}$");
  • 這里@符號是C#中的逐字字符串字面量,它告訴編譯器這個字符串中的轉(zhuǎn)義字符(如\)應(yīng)該按照字面意思處理,而不是作為C#中的轉(zhuǎn)義字符。^表示匹配字符串的開始,\d表示數(shù)字,{7,8}表示前面的元素(數(shù)字)出現(xiàn)7到8次,$表示匹配字符串的結(jié)束。
  • 進(jìn)行匹配操作
    • 使用IsMatch方法判斷是否匹配:例如,判斷一個字符串是否是符合上述格式的電話號碼。
string phoneNumber = "1234567";
bool isMatch = phoneRegex.IsMatch(phoneNumber);
if (isMatch)
{
    Console.WriteLine("是有效的電話號碼");
}
else
{
    Console.WriteLine("不是有效的電話號碼");
}
  • 使用Match和Matches方法獲取匹配結(jié)果
    • Match方法返回第一個匹配項。例如,從一段文本中獲取第一個符合電子郵件格式的字符串(簡單示例)。
string text = "我的郵箱是test@example.com,還有一個無效郵箱abc";
Regex emailRegex = new Regex(@"[a - zA - Z0 - 9_.]+@[a - zA - Z0 - 9_.]+\.[a - zA - Z]+");
Match match = emailRegex.Match(text);
if (match.Success)
{
    Console.WriteLine("找到的郵箱是: " + match.Value);
}
  • Matches方法返回所有匹配項的集合。例如,從一段文本中獲取所有的數(shù)字。
string numberText = "abc123def456";
Regex numberRegex = new Regex(@"\d+");
MatchCollection matches = numberRegex.Matches(numberText);
foreach (Match match in matches)
{
    Console.WriteLine(match.Value);
}

正則表達(dá)式的高級用法

  • 分組(Grouping):使用括號()可以將正則表達(dá)式的一部分進(jìn)行分組。分組可以用于提取匹配的特定部分或者在匹配過程中應(yīng)用量詞到一組字符上。例如,在匹配日期格式(假設(shè)為yyyy - MM - dd)時,可以這樣分組來提取年、月、日。
string dateText = "2024-05-10";
Regex dateRegex = new Regex(@"(\d{4})-(\d{2})-(\d{2})");
Match match = dateRegex.Match(dateText);
if (match.Success)
{
    Console.WriteLine("年: " + match.Groups[1].Value);
    Console.WriteLine("月: " + match.Groups[2].Value);
    Console.WriteLine("日: " + match.Groups[3].Value);
}
  • 零寬斷言(Zero - width Assertions):這是一種特殊的匹配方式,它不消耗字符,只是在某個位置進(jìn)行斷言。例如,(? =...)是正向肯定預(yù)查,它用于查找后面跟著特定模式的位置。假設(shè)要找到后面跟著abc的數(shù)字,可以這樣寫:
string assertText = "1abc 2def";
Regex assertRegex = new Regex(@"\d(? =abc)");
MatchCollection matches = assertRegex.Matches(assertText);
foreach (Match match in matches)
{
    Console.WriteLine(match.Value);
}
  • 替換匹配的文本(Regex.Replace):可以使用Regex.Replace方法來替換匹配正則表達(dá)式的文本部分。例如,將一段文本中的所有數(shù)字替換為#
string replaceText = "abc123def";
string replaced = Regex.Replace(replaceText, @"\d", "#");
Console.WriteLine(replaced);

總結(jié) 

到此這篇關(guān)于C#正則表達(dá)式的詳細(xì)使用說明的文章就介紹到這了,更多相關(guān)C#正則表達(dá)式使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#減少垃圾回收壓力的字符串操作詳解

    C#減少垃圾回收壓力的字符串操作詳解

    這篇文章給大家詳細(xì)分析了C#減少垃圾回收壓力的字符串操作的相關(guān)知識點(diǎn),有興趣的朋友參考學(xué)習(xí)下吧。
    2018-03-03
  • Unity3d使用FairyGUI 自定義字體的操作

    Unity3d使用FairyGUI 自定義字體的操作

    由于本項目ui使用了第三方ui系統(tǒng) fairyGUI 所以此文章主要講述unity3d和fairygui搭配使用字體的過程
    2021-04-04
  • 如何使用C#中的Lazy的使用方法

    如何使用C#中的Lazy的使用方法

    這篇文章主要介紹了如何使用C#中的Lazy的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • C#實現(xiàn)日歷效果

    C#實現(xiàn)日歷效果

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)日歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 詳解c#中Array,ArrayList與List<T>的區(qū)別、共性與相互轉(zhuǎn)換

    詳解c#中Array,ArrayList與List<T>的區(qū)別、共性與相互轉(zhuǎn)換

    本文詳細(xì)講解了c#中Array,ArrayList與List<T>的區(qū)別、共性與相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C#中String類常用方法匯總

    C#中String類常用方法匯總

    這篇文章主要介紹了C#中String類常用方法,較為詳細(xì)的匯總了String類中的常用方法,對于深入掌握C#字符串操作有著很好的學(xué)習(xí)借鑒價值,需要的朋友可以參考下
    2014-11-11
  • WPF實現(xiàn)繪制扇形統(tǒng)計圖的示例代碼

    WPF實現(xiàn)繪制扇形統(tǒng)計圖的示例代碼

    這篇文章主要介紹了如何利用WPF繪制扇形統(tǒng)計圖,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下
    2022-09-09
  • 詳解如何使用BenchmarkDotNet對.NET代碼進(jìn)行性能基準(zhǔn)測試

    詳解如何使用BenchmarkDotNet對.NET代碼進(jìn)行性能基準(zhǔn)測試

    BenchmarkDotNet是一個基于.NET開源、功能全面、易于使用的性能基準(zhǔn)測試框架,這篇文章就來和小編一起學(xué)習(xí)一下如何使用BenchmarkDotNet對.NET代碼進(jìn)行性能基準(zhǔn)測試吧
    2024-12-12
  • Unity控制指針旋轉(zhuǎn)到指定位置

    Unity控制指針旋轉(zhuǎn)到指定位置

    這篇文章主要為大家詳細(xì)介紹了Unity控制指針旋轉(zhuǎn)到指定位置,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#之Socket客戶端全過程

    C#之Socket客戶端全過程

    這篇文章主要介紹了C#之Socket客戶端全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評論