亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中的正則表達式介紹

2020-01-24 01:24:56
字體:
來源:轉載
供稿:網友

正則表達式的全面模式匹配表示法可以快速地分析大量的文本以找到特定的字符模式;提取、編輯、替換或刪除文本子字符串;或將提取的字符串添加到集合以生成報告。
1、正則表達式簡介

正則表達式提供了功能強大、靈活而又高效的方法來處理文本。正則表達式的全面模式匹配表示法可以快速地分析大量的文本以找到特定的字符模式;提取、編輯、替換或刪除文本子字符串;或將提取的字符串添加到集合以生成報告。對于處理字符串(例如 HTML處理、日志文件分析和 HTTP 標頭分析)的許多應用程序而言,正則表達式是不可缺少的工具。

.NET 框架正則表達式并入了其他正則表達式實現的最常見功能,被設計為與 Perl 5 正則表達式兼容,.NET 框架正則表達式還包括一些在其他實現中尚未提供的功能,.NET 框架正則表達式類是基類庫的一部分,并且可以和面向公共語言運行庫的任何語言或工具一起使用。

2、字符串搜索

正則表達式語言由兩種基本字符類型組成:原義(正常)文本字符和元字符。正是元字符組為正則表達式提供了處理能力。當前,所有的文本編輯器都有一些搜索功能,通??梢源蜷_一個對話框,在其中的一個文本框中鍵入要定位的字符串,如果還要同時進行替換操作,可以鍵入一個替換字符串,比如在Windows操作系統中的記事本、Office系列中的文檔編輯器都有這種功能。

這種搜索最簡單的方式,這類問題很容易用String類的String.Replace()方法來解決,但如果需要在文檔中識別某個重復的,該怎么辦?

編寫一個例程,從一個String類中選擇重復的字是比較復雜的,此時使用語言就很適合。

一般表達式語言是一種可以編寫搜索表達式的語言。在該語言中,可以把文檔中要搜索的文本、轉義序列和特定含義的其他字符組合在一起,例如序列b表示一個字的開頭和結尾(子的邊界),如果要表示正在查找的以字符th開頭的字,就可以編寫一般表達式bth(即序列字符界是-t-h)。如果要搜索所有以th結尾的字,就可以編寫thb(序列t-h-字邊界)。但是,一般表達式要比這復雜得多,例如,可以在搜索操作中找到存儲部分文本的工具性程序(facility)。

3、.NET 框架的正則表達式類

下面通過介紹 .NET 框架的正則表達式類,熟悉一下.NET框架下的正則表達式的使用方法。

3.1 Regex 類表示只讀正則表達式

Regex 類包含各種靜態方法,允許在不顯式實例化其他類的對象的情況下使用其他正則表達式類。以下代碼示例創建了 Regex 類的實例并在初始化對象時定義一個簡單的正則表達式。請注意,使用了附加的反斜杠作為轉義字符,它將 s 匹配字符類中的反斜杠指定為原義字符。

Regex r; // 聲明一個 Regex類的變量 r = new Regex("/s2000"); // 定義表達式 

3.2 Match 類表示正則表達式匹配操作的結果

以下示例使用 Regex 類的 Match 方法返回 Match 類型的對象,以便找到輸入字符串中第一個匹配。此示例使用 Match 類的 Match.Success 屬性來指示是否已找到匹配。

Regex r = new Regex("abc"); // 定義一個Regex對象實例 Match m = r.Match("123abc456"); // 在字符串中匹配 if (m.Success) { Console.WriteLine("Found match at position " + m.Index); //輸入匹配字符的位置 } 

3.3 MatchCollection 類表示非重疊匹配的序列

該集合為只讀的,并且沒有公共構造函數。MatchCollection 的實例是由 Regex.Matches 屬性返回的。使用 Regex 類的 Matches 方法,通過在輸入字符串中找到的所有匹配填充 MatchCollection。下面代碼示例演示了如何將集合復制到一個字符串數組(保留每一匹配)和一個整數數組(指示每一匹配的位置)中。

MatchCollection mc; String[] results = new String[20]; int[] matchposition = new int[20]; Regex r = new Regex("abc"); //定義一個Regex對象實例 mc = r.Matches("123abc4abcd"); for (int i = 0; i < mc.Count; i++) //在輸入字符串中找到所有匹配 { results = mc.Value; //將匹配的字符串添在字符串數組中 matchposition = mc.Index; //記錄匹配字符的位置 } 

3.4 GroupCollection 類表示捕獲的組的集合

該集合為只讀的,并且沒有公共構造函數。GroupCollection 的實例在 Match.Groups 屬性返回的集合中返回。下面的控制臺應用程序查找并輸出由正則表達式捕獲的組的數目。

using System; using System.Text.RegularExpressions; public class RegexTest { public static void RunTest() { Regex r = new Regex("(a(b))c"); //定義組 Match m = r.Match("abdabc"); Console.WriteLine("Number of groups found = " + m.Groups.Count); } public static void Main() { RunTest(); } } 

該示例產生下面的輸出:

Number of groups found = 3

3.5 CaptureCollection 類表示捕獲的子字符串的序列

由于限定符,捕獲組可以在單個匹配中捕獲多個字符串。Captures屬性(CaptureCollection 類的對象)是作為 Match 和 group 類的成員提供的,以便于對捕獲的子字符串的集合的訪問。例如,如果使用正則表達式 ((a(b))c)+(其中 + 限定符指定一個或多個匹配)從字符串"abcabcabc"中捕獲匹配,則子字符串的每一匹配的 Group 的 CaptureCollection 將包含三個成員。

下面的程序使用正則表達式 (Abc)+來查找字符串"XYZAbcAbcAbcXYZAbcAb"中的一個或多個匹配,闡釋了使用 Captures 屬性來返回多組捕獲的子字符串。

using System; using System.Text.RegularExpressions; public class RegexTest { public static void RunTest() { int counter; Match m; CaptureCollection cc; GroupCollection gc; Regex r = new Regex("(Abc)+"); //查找"Abc" m = r.Match("XYZAbcAbcAbcXYZAbcAb"); //設定要查找的字符串 gc = m.Groups; //輸出查找組的數目 Console.WriteLine("Captured groups = " + gc.Count.ToString()); // Loop through each group. for (int i=0; i < gc.Count; i++) //查找每一個組 { cc = gc.Captures; counter = cc.Count; Console.WriteLine("Captures count = " + counter.ToString()); for (int ii = 0; ii < counter; ii++) { // Print capture and position. Console.WriteLine(cc[ii] + " Starts at character " + cc[ii].Index); //輸入捕獲位置 } } } public static void Main() { RunTest(); } } 

此例返回下面的輸出結果:

Captured groups = 2 Captures count = 1 AbcAbcAbc Starts at character 3 Captures count = 3 Abc Starts at character 3 Abc Starts at character 6 Abc Starts at character 9 

3.6 Capture 類包含來自單個子表達式捕獲的結果

在 Group 集合中循環,從 Group 的每一成員中提取 Capture 集合,并且將變量 posn 和 length 分別分配給找到每一字符串的初始字符串中的字符位置,以及每一字符串的長度。

Regex r; Match m; CaptureCollection cc; int posn, length; r = new Regex("(abc)*"); m = r.Match("bcabcabc"); for (int i=0; m.Groups.Value != ""; i++) { cc = m.Groups.Captures; for (int j = 0; j < cc.Count; j++) { posn = cc[j].Index; //捕獲對象位置 length = cc[j].Length; //捕獲對象長度 } } 

把組合字符組合起來后,每次都會返回一個組對象,就可能并不是我們希望的結果。如果希望把組合字符作為搜索模式的一部分,就會有相當大的系統開銷。對于單個的組,可以用以字符序列"?:"開頭的組禁止這么做,就像URI樣例那樣。而對于所有的組,可以在RegEx.Matches()方法上指定RegExOptions.ExplicitCapture標志。

希望通過本文對正則表達式的介紹,能夠給你帶來幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产成人在线播放| 欧美精品一区二区三区国产精品| 久久精品成人欧美大片古装| 久久6精品影院| 热re91久久精品国99热蜜臀| 久久全国免费视频| 欧美激情啊啊啊| 九九精品在线播放| 亚洲美女又黄又爽在线观看| 国产精品美女主播在线观看纯欲| 日韩av一区二区在线观看| 久久99视频精品| 深夜福利91大全| 欧美日韩精品在线视频| 成人免费网站在线观看| 一区二区三区美女xx视频| 亚洲人成网站在线播| 久久久久久午夜| 操人视频在线观看欧美| 国产精品黄色影片导航在线观看| 九色精品美女在线| 8050国产精品久久久久久| 亚洲免费av电影| 欧美肥老太性生活视频| 国产精品午夜国产小视频| 欧美成人在线免费视频| 51午夜精品视频| 成人激情综合网| 亚洲自拍中文字幕| 欧美主播福利视频| 欧美激情视频一区二区三区不卡| 久久99久国产精品黄毛片入口| 亚洲精品国产美女| 成人网在线视频| 91欧美精品午夜性色福利在线| 亚洲午夜精品视频| 国产亚洲成av人片在线观看桃| 国产成人精品在线| 国内精品久久久久影院 日本资源| 久久成人精品视频| 欧美一区二区色| 久久综合久中文字幕青草| 黑人极品videos精品欧美裸| 亚洲成人亚洲激情| 国产亚洲成av人片在线观看桃| 国产精品欧美日韩一区二区| 亚洲精品久久久久中文字幕欢迎你| 日韩三级影视基地| 成人免费淫片视频软件| 成人网在线免费观看| 日韩中文娱乐网| 成人欧美在线视频| 日本中文字幕久久看| 欧美午夜片欧美片在线观看| 久久久免费观看视频| 欧美巨猛xxxx猛交黑人97人| 日韩中文字幕视频在线观看| 亚洲a级在线播放观看| 久久久黄色av| 国产精品∨欧美精品v日韩精品| 国产精品扒开腿做| 亚洲人av在线影院| 2019亚洲日韩新视频| 国产欧美一区二区三区久久| 日韩精品福利在线| 久久久亚洲网站| 亚洲人av在线影院| 亚洲天堂免费在线| 91精品久久久久久久久久| 国产日韩av在线播放| 在线亚洲国产精品网| 一道本无吗dⅴd在线播放一区| 欧美日韩免费区域视频在线观看| 欧美午夜丰满在线18影院| 亚洲国产精品99| 亚洲肉体裸体xxxx137| 欧美精品成人在线| 97超级碰碰人国产在线观看| 欧美日韩国产一区在线| 成人亚洲欧美一区二区三区| 亚洲一区二区三区乱码aⅴ| 在线视频欧美性高潮| 久久精品99久久久久久久久| 波霸ol色综合久久| 国产精品一区二区三区成人| 亚洲网在线观看| 91在线观看免费网站| 亚洲无av在线中文字幕| 精品国产91乱高清在线观看| 秋霞午夜一区二区| 久久中文精品视频| 欧美精品18videosex性欧美| 成人黄色av播放免费| 日韩视频―中文字幕| 国产欧美精品一区二区三区-老狼| 国产精品福利在线观看| 国产一区私人高清影院| 国产精品一久久香蕉国产线看观看| 91久久久精品| 亚洲色图第一页| 国产一级揄自揄精品视频| 国产精品人人做人人爽| 在线观看视频99| 另类天堂视频在线观看| 亚洲成人国产精品| 国产精品爱啪在线线免费观看| 久久99国产综合精品女同| 欧美性在线视频| 日韩国产精品视频| 国产精品女视频| 亚洲国产精品资源| 国产亚洲精品激情久久| 久久天天躁狠狠躁老女人| www.国产一区| 91沈先生在线观看| 欧美性精品220| 久久久久这里只有精品| 国产丝袜一区二区| 欧美激情中文字幕在线| 亚洲电影天堂av| 91大神在线播放精品| 日本老师69xxx| 久久久精品日本| 国产日韩欧美在线| 欧美激情视频播放| 国产日韩专区在线| 欧亚精品中文字幕| 国产99视频精品免视看7| 亚洲成年人在线| 欧亚精品在线观看| 欧美成年人视频网站欧美| 欧美在线视频免费播放| 亚洲国产古装精品网站| 亚洲精品一区二区三区婷婷月| 欧美日韩成人在线播放| 欧美一级视频在线观看| 成人深夜直播免费观看| 国产精品99久久久久久久久| 久久97精品久久久久久久不卡| 亚洲免费电影一区| 亚洲国产精品va在线观看黑人| 色久欧美在线视频观看| 日本精品va在线观看| 精品成人国产在线观看男人呻吟| 97色在线视频观看| 欧美性xxxxxx| 欧美中文在线观看国产| 最近2019年好看中文字幕视频| 国产精品欧美亚洲777777| 日韩精品视频在线播放| 久久免费视频网站| 国产精品成人av性教育| 少妇久久久久久| 欧美激情日韩图片| 亚洲国产欧美自拍| 8090理伦午夜在线电影| 亚洲国产成人精品女人久久久| 亚洲a一级视频| 97视频免费在线看| 日韩精品一区二区视频| 亚洲精品一区二区在线| 国产三级精品网站| 日韩最新免费不卡| 欧美激情按摩在线|