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

歡迎訪問 生活随笔!

生活随笔

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

C#

全面剖析C#正则表达式

發布時間:2024/9/20 C# 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全面剖析C#正则表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C#中的正則表達式包含在.NET基礎雷庫的一個名稱空間下,這個名稱空間就是System.Text.RegularExpressions。該名稱空間包括8個類,1個枚舉,1個委托。他們分別是:
???????????????????? Capture: 包含一次匹配的結果;?
???????????????????? CaptureCollection: Capture的序列;?
?????????????????????Group: 一次組記錄的結果,由Capture繼承而來;?
?????????????????????GroupCollection:表示捕獲組的集合
?????????????????????Match: 一次表達式的匹配結果,由Group繼承而來;?
?????????????????????MatchCollection: Match的一個序列;?
?????????????????????MatchEvaluator: 執行替換操作時使用的委托;?
?????????????????????Regex:編譯后的表達式的實例。?
?????????????????????RegexCompilationInfo:提供編譯器用于將正則表達式編譯為獨立程序集的信息
?????????????????????RegexOptions 提供用于設置正則表達式的枚舉值
Regex類中還包含一些靜態的方法:?
??????????????????? Escape: 對字符串中的regex中的轉義符進行轉義;?
??????????????????? IsMatch: 如果表達式在字符串中匹配,該方法返回一個布爾值;?
??????????????????? Match: 返回Match的實例;?
??????????????????? Matches: 返回一系列的Match的方法;?
??????????????????? Replace: 用替換字符串替換匹配的表達式;?
??????????????????? Split: 返回一系列由表達式決定的字符串;?
??????????????????? Unescape:不對字符串中的轉義字符轉義。

下面介紹他們的用途:
??????? 先看一個簡單的匹配例子,我們首先從使用Regex、Match類的簡單表達式開始學習。 Match m = Regex.Match("abracadabra", "(a|b|r)+"); 我們現在有了一個可以用于測試的Match類的實例,例如:if (m.Success){},如果想使用匹配的字符串,可以把它轉換成一個字符串:   MesaageBox.Show("Match="+m.ToString()); 這個例子可以得到如下的輸出: Match=abra。這就是匹配的字符串了。

??????? Regex 類表示只讀正則表達式類。它還包含各種靜態方法(在下面的實例中將逐一介紹),允許在不顯式創建其他類的實例的情況下使用其他正則表達式類。

??????? 以下代碼示例創建了 Regex 類的實例并在初始化對象時定義一個簡單的正則表達式。聲明一個Regex對象變量:Regex objAlphaPatt;,接著創建Regex對象的一個實例,并定義其規則:objAlphaPatt=new Regex("[^a-zA-Z]");

??????? IsMatch方法指示 Regex 構造函數中指定的正則表達式在輸入字符串中是否找到匹配項。這是我們使用C#正則表達式時最常用的方法之一。下面的例子說明了IsMatch方法的使用:
if( !objAlphaPatt.IsMatch("testisMatchMethod"))
?lblMsg.Text = "匹配成功";
else
?lblMsg.Text = "匹配不成功";
這段代碼執行的結果是“匹配成功”
if( ! objAlphaPatt.IsMatch("testisMatchMethod7654298"))
?lblMsg.Text = "匹配成功";
else
?lblMsg.Text = "匹配不成功";
這段代碼執行的結果是“匹配不成功”

???????? Escape方法表示把轉義字符作為字符本身使用,而不再具有轉義作用,最小的元字符集(\、*、+、?、|、{、[、(、)、^、$、.、# 和空白)。Replace方法則是用指定的替換字符串替換由正則表達式定義的字符模式的所有匹配項。看下面的例子,還是使用上面定義的Regex對象:objAlphaPatt.Replace("this [test] ** replace and escape" ,Regex.Escape("()"));他的返回結果是:this\(\)\(\)test\(\)\(\)\(\)\(\)\(\)replace\(\)and\(\)escape,如果不是Escape的話,則返回結果是:this()()test()()()()()replace()and()escape,Unescape 反轉由 Escape 執行的轉換,但是,Escape 無法完全反轉 Unescape。

??????? Split方法是把由正則表達式匹配項定義的位置將輸入字符串拆分為一個子字符串數組。例如:
Regex r = new Regex("-"); // Split on hyphens.
string[] s = r.Split("first-second-third");
for(int i=0;i<s.Length;i++)
{
?Response.Write(s[i]+"<br>");
} 執行的結果是:
First
Second
Third 看上去和String的Split方法一樣,但string的Split方法在由正則表達式而不是一組字符確定的分隔符處拆分字符串。

??????? Match方法是在輸入字符串中搜索正則表達式的匹配項,并Regex 類的 Match 方法返回 Match 對象,Match 類表示正則表達式匹配操作的結果。下面的例子演示Match方法的使用,并利用Match對象的Group屬性返回Group對象:

string text = @"public string testMatchObj string s string? match ";
string pat = @"(\w+)\s+(string)";
// Compile the regular expression.
Regex r = new Regex(pat, RegexOptions.IgnoreCase);
// Match the regular expression pattern against a text string.
Match m = r.Match(text);
int matchCount = 0;
while (m.Success)
{
?Response.Write("Match"+ (++matchCount) + "<br>");
?for (int i = 1; i <= 2; i++)
?{
??Group g = m.Groups[i];
??Response.Write("Group"+i+"='" + g + "'"? + "<br>");
??CaptureCollection cc = g.Captures;
??for (int j = 0; j < cc.Count; j++)
??{
???Capture c = cc[j];
???Response.Write("Capture"+j+"='" + c + "', Position="+c.Index + "<br>");
??}
?}
?m = m.NextMatch();
} 該事例運行結果是:
Match1
Group1='public'
Capture0='public', Position=0
Group2='string'
Capture0='string', Position=7
Match2
Group1='testMatchObj'
Capture0='testMatchObj', Position=14
Group2='string'
Capture0='string', Position=27
Match3
Group1='s'
Capture0='s', Position=34
Group2='string'
Capture0='string', Position=36

??????? MatchCollection 類表示成功的非重疊匹配的只讀的集合,MatchCollection 的實例是由 Regex.Matches 屬性返回的,下面的實例說明了通過在輸入字符串中找到所有與Regex中指定的匹配并填充 MatchCollection。

MatchCollection mc;
Regex r = new Regex("match");
mc = r.Matches("matchcollectionregexmatchs");
for (int i = 0; i < mc.Count; i++)
{
?Response.Write( mc[i].Value + " POS:" + mc[i].Index.ToString() + "<br>");
}
該實例運行的結果是:
match POS:0
match POS:20

轉載于:https://blog.51cto.com/thinkingod/108844

總結

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

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

主站蜘蛛池模板: 亚洲精品自拍视频 | 国产中文在线观看 | 久久精品中文 | 调教丰满的已婚少妇在线观看 | 人妻换人妻a片爽麻豆 | 亚洲aaa级 | 亚洲av综合永久无码精品天堂 | 久久美女免费视频 | 黄网在线免费看 | 国产1页 | 欧美色图亚洲色 | 中文字幕一区二区三区四区免费看 | 日本美女黄色大片 | 女同亚洲精品一区二区三 | 亚洲天堂99| 少妇人妻综合久久中文字幕 | 日本a v在线播放 | 日本大尺度吃奶做爰视频 | 国产精品电影在线观看 | 国产肉丝在线 | 亚洲天天做| 制服 丝袜 综合 日韩 欧美 | 男人的天堂免费视频 | 99视频免费看 | 欧美大片91 | 暖暖成人免费视频 | 日产电影一区二区三区 | 国产卡一卡二 | 亚洲日本护士毛茸茸 | 日日爱影视| 欧美高清在线一区 | jzzijzzij日本成熟少妇 | 久久久久久免费精品 | 国产传媒国产传媒 | 熟妇熟女乱妇乱女网站 | 91网站观看 | 日韩精品第一页 | 国产在线精品视频 | wwwxx国产 | 成人动漫在线免费观看 | 91成人午夜| 国产在线久久久 | 欧美亚洲综合视频 | 538国产视频 | 原创av| 天天躁狠狠躁 | 久久久久久久无码 | 老司机精品视频在线 | 欧美a∨亚洲欧美亚洲 | 亚洲欧美国产精品 | 黄色茄子视频 | 丁香花免费高清完整在线播放 | 久久精品无码一区二区三区免费 | 亚洲精品一区二区三区不卡 | 男人的天堂视频在线观看 | 美国av导航| 欧美精品中文 | 秋霞国产午夜精品免费视频 | 国产又粗又黄又猛 | 欧美日韩免费观看一区=区三区 | 91精品国产色综合久久不卡蜜臀 | 欧美激情视频在线观看 | 超薄肉色丝袜一二三 | 欧美黄色性视频 | 综合久久久久久久久久久 | 日本免费黄色小视频 | 91天堂在线视频 | 亚洲美女综合 | 国产精品一区二区三区在线看 | 亚洲产国偷v产偷v自拍涩爱 | free性中国hd国语露脸 | av合集| 99久热| 亚洲精品网站在线 | 狠狠搞狠狠干 | 毛片无码一区二区三区a片视频 | 开心激情av| 一区二区三区免费视频观看 | 久久久精品久久久久久 | 亚洲人成人网 | 国产在线麻豆精品观看 | h在线网站 | 97自拍网| 狠狠操狠狠操狠狠操 | 玖玖在线视频 | 奇米av在线 | 日韩h视频 | 久久久久这里只有精品 | 伊人国产在线观看 | 欧美日韩一区二区不卡 | 欧美日韩一区精品 | 一本一道精品欧美中文字幕 | 亚洲啪啪网站 | 一区二区精品视频在线观看 | 天天操天| 欧美日韩国产在线一区 | 国产一区二区三区高清视频 | 日韩黄色免费观看 | 99re在线观看 |