日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#菜鸟正则表达式一

發(fā)布時間:2024/4/15 C# 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#菜鸟正则表达式一 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  LZ菜鳥,僅整理筆記,順帶記錄一下,謂之增加印象。

  LZ認為,沒必要太糾結(jié)原理,模型, 屌絲能用就對了,剩下的事情用多了自然會去探索。

???? 中文:正則表達式,英文:Regular? ExPression,也叫匹配模式(pattern),用來檢驗字符串是否滿足特定的規(guī)則,或從字符串捕獲滿足特定規(guī)則的子串。

???? 字符匹配

???? 最簡單的正則表達式由“普通字符”和“通配符”組成。比如“Room\d\d\d”就是這樣的正則表達式。

????

???? 其中 “Room” 是普通字符,而“\d”是通配符,表示該位置上有一個數(shù)字。該表達式一共占用了7個位置,第一個位置上是字母“R”,而第二個和第三個位置上都是位置“o”,第四個位置上是“m”,而第五個到第七個位置上是三個數(shù)字。所以正則表達式“Room\d\d\d”代表著以“Room”開頭,以三個數(shù)字結(jié)尾的那一類字符串。比如字符串”Room010”,"Room111"都與“Room\d\d\d”匹配。

??????

??? 這些特殊字符在正則表達式中稱為元字。因為符號“ . ”在正則表達式里已有特殊符用處,所以要想表達“ . ”本身,需要使用它的轉(zhuǎn)移符 “ \. ”,同樣表達符號 ”\“本身,需要使用它的轉(zhuǎn)移符”\\“。

??? .NET提供了一批與正則表達式相關(guān)的類,它們都位于 using System.Text.RegularExpressions? 命名空間里,現(xiàn)在我們來看下Regex類。

?

?

  Regex類的部分方法

????

????? 通過Regex.Matches()方法,可以從給定字符串中分解出所有與正則表達式匹配的子串,這些子串被保存在一個MatchCollection 型的集合中,每個子串都被看做Match類的對象。現(xiàn)在假設(shè)某份電子文件里包含著Kitty的房間號(格式如前面的 RoomXXX),檔案很長,人工查閱費時費力,那么如何通過計算機幫我們找到房間號呢? 是時候祭出正則兄了!

?????

小例子時間到了:
//命名空間 using System.Text.RegularExpressions;
string text = "kitty住在room415,tonny住在room332";Regex expression = new Regex(@"room\d\d\d");MatchCollection mathes = expression.Matches(text);//匹配的結(jié)果是一個集合foreach(Match match in mathes)Console.WriteLine(match);Match match1 = expression.Match(text);//匹配結(jié)果是單個 Console.WriteLine(match1);Console.WriteLine(match1.NextMatch());//下一個匹配bool match2= expression.IsMatch(text);//是否有匹配Console.WriteLine(match2);

????????????

?

? ? ?@前綴和轉(zhuǎn)移字符 ?

????? 我們前面學習過控制文本格式的轉(zhuǎn)移字符,如” \n “?? " \" " ? "? \t? "? " \\ "等,現(xiàn)在又學習了正則表達式的轉(zhuǎn)移字符,如 " \. "? "? \w "? " \d "? "? \s? " "? \\ "等,在正則中它們是有區(qū)別的。

????? Regex exoression=new Regex("\d");

???? 這樣寫就會出現(xiàn)錯誤,因為反斜杠 ”? \ “ 本身就是一個特殊的字符,要想表示反斜杠本身,需要使用它的轉(zhuǎn)移符 ” \\ “ ,所以需要寫成下面的形式:

????? Regex expression =new Regex("\\d");?

????? 但是這種形式會降低可讀性,所以我們通常使用加 @ 前綴的方式。

  Regex expression =new Regex(@"\d");

????? 這時會忽略控制文本的格式的轉(zhuǎn)移符,但不忽略正則表達式的轉(zhuǎn)移符。

????? 添加前綴@后,如果字符串里需要引用雙引號本身,就可以用連續(xù)的雙引號來表示。

????? Regex expression=new Regex(@"Say ""Hello"" ")

?

????? @可選字符集

????? 除了通配符外,我們還可以把某個位置上允許出現(xiàn)的字符卸載方括號 [] 內(nèi),組成可選字符集,比如:

?????

?

//可選字符:string text = "Vitor-1970 Verne-1982 Regan-1998 Robin-2008";Regex regex = new Regex(@"[VR][a-z]+-19[89][0-9]");//[VR][a-z]第一個字符V或者R,第二個字符a到z,+ 號表示后面都是a-zforeach (Match match in regex.Matches(text))Console.WriteLine(match);反向字符:string text2 = "dog bod fog hog log";Regex regex2 = new Regex(@"[^bd]og"); //第一個字符非b或者dforeach(var match in regex2.Matches(text2))
       {
??????????????? Console.WriteLine(match);
??????????? }Console.WriteLine(match);


?

??????? 或匹配符

??????

string text3 = "there is a bee in the tree";Regex regex3 = new Regex(@"(tr|b)ee"); //tr或者b+eeforeach (var match in regex3.Matches(text3))Console.WriteLine(match);



?

? Tips:鑒于正則表達式難以書寫,常用的我們可以百度,入匹配注冊信息之類的,如果自己編寫不靠譜,可以使用 "Regex Tester"工具來測試。

轉(zhuǎn)載于:https://www.cnblogs.com/legendtao/p/5212316.html

總結(jié)

以上是生活随笔為你收集整理的C#菜鸟正则表达式一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。