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

歡迎訪問 生活随笔!

生活随笔

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

C#

C#正则表达式积累

發布時間:2023/11/29 C# 92 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#正则表达式积累 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
感謝:側身向南邊? ?http://www.cnblogs.com/kissknife/archive/2008/03/23/1118423.html
的分享給了自己學習的機會?

?

-------------------------------------C#的正則表達式-------------------------------------------

@的作用:string x="D:\\My Huang\\My Doc";string y = @"D:\My Huang\My Doc";這兩句作用相等C#中想用的類和方法:string str = "1";Regex r1 = new Regex(@"\d");--里面放的是正則格式,如果是一串間的字符,那就原樣匹配bool result = r1.IsMatch(str);返回的是trueIsMatch()只要有合適的就返回true,只能做大概的判斷純記憶部分\d ?0-9的數字--(目前還不明白1.5所不算)用IsMatch()肯定測不出來,因為既有1又有5.\D ?\d的補集\w ?單詞字符,指大小寫字母、0-9的數字、下劃線\W ?\w的補集\s ?空白字符,包括換行符\n、回車符\r、制表符\t、垂直制表符\v、換頁符\f\S ?\s的補集. ?除換行符\n外的任意字符[…] 里面的格式作為一個整體,匹配的是一個字符,比如[abc]匹配a,匹配b也匹配c[^…] ?匹配非[]內所列出的字符拆分操作:string pattern = "[#$]"; //也可以寫成string pattern = "#|$";?String input="11$8$8#99";string[] rs = Regex.Split(input, pattern);數組是 11 8 8 99注意:如果想要匹配. $ * ^ ) ( [ ] 等等字符串需要轉義,例如"\$" 但是這樣就不用\轉義了[$]string i = "hello,world";Regex result = new Regex("hello,world");//trueresult.IsMatch(i)這兩句值得揣摩Regex result = new Regex("^hello,world$");//trueRegex result = new Regex("hello,worl");//falseRegex result = new Regex("^hello,worl$");//falseRegex result = new Regex("^hello,worl");//true常用的方法string i = "hellohello";Regex result = new Regex("hello");result.Matches.Count(i);//2純粹記憶部分:與次數相關的{n} ? ? 匹配前面的字符n次{n,} ? ?n次或多于n次{n,m} ? n到m次? ? ? ? 匹配前面的字符0或1次+ ? ? ? 1次或多于1次* ? ? ? 0次或式于0次定位的字符^ ?表示其后的字符必須位于字符串的開始處$ ?表示其前面的字符必須位于字符串的結束處\b ?匹配一個單詞的邊界 ? ? 注意:所謂的邊界不光是空格還有, . - # $ % 等等不是單詞中元素的都視為邊界。(2,d,_)都不是邊界\B ?匹配一個非單詞的邊界String str ="hello,everybody,happy everyday";Regex r = new Regex(@"^hello,([a-z]{5})body,happy \1day$");([a-z]{5})為一組,后面的\1就算是指的它?r.Match(str).Groups[1].Value?得到"every"String str = "zhangranzhang";Regex r = new Regex(@"^(?<a>[a-z]{5})ran\1$");//給組定義一個名字Console.WriteLine(r.Matches(str).Count);Console.WriteLine(r.Match(str).Groups[1].Value);//通過索引取值Console.WriteLine(r.Match(str).Groups["a"].Value);//通過鍵取值String str = "zhangzhang ran";Regex r = new Regex(@"([a-z]{5})\1");Console.WriteLine(r.Replace(str,"$1"));取代重復,字段 輸出zhang ranRegex r = new Regex(@"(?:[a-z]{5})");?:表示非捕獲組,這時引擎不會將改組保存起來,在用不到組是這樣做節省資源貪婪與非貪婪:默認情況,引擎是貪心的,但是在* + 等表示字數的符號后面加?就改為費貪心的了String myStr = "everyboy is good boy";Regex res = new Regex(@".*boy");Console.WriteLine(res.Match(myStr).Value);//輸出everyboy is good boy非貪婪Regex res = new Regex(@".*?boy");Console.WriteLine(res.Match(myStr).Value);//輸出everyboy貪婪與回溯正則表達式是用回溯的方法來實現貪婪匹配的String myStr = "everyboy, is good boy";Regex res = new Regex(@".*boy,");在上面的表達式中,引擎先掃描整個字符串,當前三個字符boy匹配完其實是移動到末尾匹配到了最后一個boy但是在匹配,的時候出現問題,只能回溯到最近的一個boy再去匹配,所以輸出的內容是everyboy,?(?>…)這是用來定義非回溯正則的Regex res = new Regex(@"(?>.*)boy,");這樣就是非回溯的,這樣一來,就無法匹配了,IsMatch()返回false正向預搜索與反向預搜索正向預搜索包括:正聲明(?=),負聲明(?!)String str = "i love the cute nation the big world";Regex r = new Regex(@".{3,4}\b(?=world)"); ? 換成(?!world)就是指后面不是world匹配后面跟著一個world的字符串反向預搜索正聲明(?<=),負聲明(?<!)

轉載于:https://www.cnblogs.com/zhangran/archive/2012/03/11/2390521.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。