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

C#正則表達(dá)式(Regex類(lèi))用法實(shí)例總結(jié)

 更新時(shí)間:2022年08月04日 11:05:14   作者:AD鈣奶吖  
正則表達(dá)式的主要作用是驗(yàn)證字符串的值是否滿(mǎn)足一定的規(guī)則,在頁(yè)面輸入數(shù)據(jù)驗(yàn)證方面的應(yīng)用比較多,下面這篇文章主要給大家介紹了關(guān)于C#正則表達(dá)式(Regex類(lèi))用法的相關(guān)資料,需要的朋友可以參考下

前言

最近學(xué)是C#的窗口應(yīng)用開(kāi)發(fā)編程,然后我在網(wǎng)站搜了一個(gè)早上,結(jié)果大多數(shù)是有一些基礎(chǔ)的才看得懂,像對(duì)與我這個(gè)小白,看了半天都看不懂

最后,還是請(qǐng)教了大神,把我教會(huì)了

下面就我對(duì)C#的正則表達(dá)式的一些總結(jié),第一次寫(xiě)博客,哈哈哈哈,寫(xiě)的不好請(qǐng)見(jiàn)諒,各位大佬們,愛(ài)你們。

1.正則表達(dá)式的概念

什么是正則表達(dá)式?

英文Regular Expression,是計(jì)算機(jī)科學(xué)的一一個(gè) 重要概念,她使用一種數(shù)學(xué)算法來(lái)解決計(jì)算機(jī)程序中的文本檢索,匹配等問(wèn)題,正則表達(dá)式語(yǔ)言是一種專(zhuān)門(mén)用于字符串處理的語(yǔ)言。在很多語(yǔ)言中都提供了對(duì)它的支持,C#也不例外,它可以幫我們解決下面的問(wèn)題:例如賬號(hào)、密碼的驗(yàn)證等等、

1.1正則表達(dá)式的組成

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

1.1.1元字符是什么

所謂元字符就是指那些在正則表達(dá)式中具有特殊意義的專(zhuān)用字符,可以用來(lái)規(guī)定其前導(dǎo)字符(即位于元字符前面的字符)在目標(biāo)對(duì)象中的出現(xiàn)模式。

1.1.2定位元字符

字符 說(shuō)明

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

1.2三個(gè)括號(hào)??

在正則表達(dá)式中有3種類(lèi)型的括號(hào)

他們分別是:方括號(hào)、花括號(hào)、圓括號(hào)、(簡(jiǎn)稱(chēng)方花園)??

方括號(hào)“[“和花括號(hào)“{“●

方括號(hào)"[“內(nèi)是需要匹配的字符,

花括號(hào)”{"內(nèi)是指定匹配字符的數(shù)量。

圓括號(hào)“(“ :表示用來(lái)分組的。

插入符號(hào)“入”:表示正則式的開(kāi)始。

美元符號(hào)“$” :表示正則式的結(jié)束。

1.3簡(jiǎn)化正則表達(dá)式

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

1.4@符號(hào)的作用

我們經(jīng)常在正則表達(dá)式字符串上加@字符,目的就是為了,不讓編譯器去解析其中的轉(zhuǎn)義字符,,而作為正則表達(dá)式語(yǔ)法(元字符)存在。

在這里插入代碼片

1.5正則表達(dá)式可以實(shí)現(xiàn)四種功能:

因?yàn)槲铱吹狡渌┛驼f(shuō)C#有很多方法可以用正則表達(dá)式,然后下面的一些例子,都用的是我認(rèn)為,比較簡(jiǎn)單的方法。大神勿噴,┗|`O′|┛ 嗷~~

溫馨提示:要運(yùn)用下面的一些語(yǔ)句的要引入

using System.Text.RegularExpressions的命名空間

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

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

2,匹配:判斷給定的字符中是否符合正則表達(dá)式的過(guò)濾邏輯 你可以認(rèn)為正則表達(dá)式表述了一個(gè)字符串的書(shū)寫(xiě)規(guī)則

在這里的就得用從開(kāi)頭到結(jié)尾都為的數(shù)字為T(mén)rue,出現(xiàn)一個(gè)不為數(shù)字輸出False
Regex reg = new Regex("^[0-9]*$");//判斷整個(gè)字符串是否都為數(shù)字
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>");


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

4, 替換

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

2.常用的正則表達(dá)式方法

2.1靜態(tài)方法IsMath

1,靜態(tài)方法IsMatch

IsMath(返回值是一個(gè)布爾類(lèi)型,用于判斷指定的字符串是否與正則表達(dá)式字符中匹配,它有三個(gè)重載方法)

bool IsMatch(string input, string pattern);

參數(shù):

input: 要搜索匹配項(xiàng)的字符串。

pattern:要匹配的正則表達(dá)式模式。

返回結(jié)果:如果正則表達(dá)式找到匹配項(xiàng),則為true;否則,為false。

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

參數(shù):

input: 要搜索匹配項(xiàng)的字符串。

pattern:要匹配的正則表達(dá)式模式。

options:枚舉值 的一一個(gè)按位組合, 這些枚舉值提供匹配選項(xiàng)。

返回結(jié)果:如果正則表達(dá)式找到匹配項(xiàng),則為true;否則,為false。

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

參數(shù):

input: 要搜索匹配項(xiàng)的字符串。

pattern:要匹配的正則表達(dá)式模式。

options:枚舉值的一個(gè)按位組合,這些枚舉值提供匹配選項(xiàng)。

matchTimeout:超時(shí)間隔

System.Text.RegularExpressions.Regex.InfiniteMatchTimeout 指示該方法不應(yīng)超時(shí)。

返回結(jié)果:如果正則表達(dá)式找到匹配項(xiàng),則為true;否則,為false。

2.1.1 關(guān)于參數(shù)RegexOptions

它是一個(gè)枚舉類(lèi)型,有以下枚舉值


RegexOptions枚舉值          內(nèi)聯(lián)標(biāo)志         簡(jiǎn)單說(shuō)明
ExplicitCapture               n           只有定義了命名或編號(hào)的組才捕獲
IgnoreCase                    i           不區(qū)分大小寫(xiě)
IgnorePatternWhitespace       x           消除模式中的非轉(zhuǎn)義空白并啟用由#標(biāo)記的注釋。
MultiLine                     m           多行模式,其原理是修改了^和$的含義
SingleLine                    s            單行模式,和Multiline相對(duì) 

2.2靜態(tài)方法Match

Match的作用:使用指定的匹配選項(xiàng)在輸入字符串中搜索指定的正則表達(dá)式的第一個(gè)匹配項(xiàng)。返回一個(gè)包含有關(guān)匹配的信息的對(duì)象。同樣有三個(gè)重載方法,參數(shù)和IsMatch方法相同。

此外,在Regex類(lèi)中, 還有一個(gè)同名的非靜態(tài)方法,適用于多個(gè)實(shí)例的情況下,效率更高- - 些。

下面的關(guān)于Match的三個(gè)重載方法

  • 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靜態(tài)方法Matchs

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

2.4 Replaces函數(shù)

我們知道正則表達(dá)式主要是實(shí)現(xiàn)驗(yàn)證,提取,分割,替換字符的功能.Replace函數(shù)是實(shí)現(xiàn)替換功能的.

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

//input是源字 符串,pattern是匹配的條件,replacement是替換的內(nèi)容,就是把符合匹配條件pattern的內(nèi)容轉(zhuǎn)換成它

比如string result = Regex.Replace("abc", "ab", "#" );
?//結(jié)果是#c,就是把字符串a(chǎn)bc中的ab替換成#

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

//RegexOptions是- 一個(gè)枚舉類(lèi)型,用來(lái)做- -些設(shè)定

//前面用注釋時(shí) 就用到了RegexOptions.IgnorePatternWhitespace.如果在匹配時(shí)忽略大小寫(xiě)就可以用

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

補(bǔ)充:在 Regex 類(lèi)中使用 IsMatch 方法判斷所匹配的字符串是否滿(mǎn)足正則表達(dá)式的要求

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

總結(jié)

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

相關(guān)文章

最新評(píng)論