自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談C#匹配字符串

開(kāi)發(fā) 后端
本文介紹C#匹配字符串,大多數(shù)重要的正則表達(dá)式語(yǔ)言運(yùn)算符都是非轉(zhuǎn)義的單個(gè)字符。轉(zhuǎn)義符通知正則表達(dá)式分析器反斜杠后面的字符不是運(yùn)算符。

C#匹配字符串

大多數(shù)重要的正則表達(dá)式語(yǔ)言運(yùn)算符都是非轉(zhuǎn)義的單個(gè)字符。轉(zhuǎn)義符 \(單個(gè)反斜杠)通知正則表達(dá)式分析器反斜杠后面的字符不是運(yùn)算符。例如,分析器將星號(hào) (*) 視為重復(fù)限定符,而將后跟星號(hào)的反斜杠 (\*) 視為 Unicode 字符 002A。

使用一般表達(dá)式要習(xí)慣的一點(diǎn)是,查看像這樣怪異的字符序列,但這個(gè)序列的工作是非常邏輯化的。轉(zhuǎn)義序列\(zhòng)S表示任何不適空白的字符。*稱為數(shù)量詞,其含義是前面的字符可以重復(fù)任意次,包括0次。序列\(zhòng)S*表示任何不適空白的字符。因此,上面的模式匹配于以n開(kāi)頭,以ion結(jié)尾的任何單個(gè)字。下表中列出的字符轉(zhuǎn)義在正則表達(dá)式和替換模式中都會(huì)被識(shí)別。

表1:特定字符或轉(zhuǎn)義序列

https://s8.51cto.com/oss/202207/19/a3b866b715442e6ec88810bbbb99595e08cf3c.jpg

如果要搜索一個(gè)元字符,也可以通過(guò)帶有反斜杠的轉(zhuǎn)義字符來(lái)表示。例如,.表示除了換行字符以外的任何字符,而\.表示一個(gè)點(diǎn)。

可以把可替換的字符放在方括號(hào)中,請(qǐng)求匹配包含這些字符。例如,[1|c]表示字符可以是1或者是c。如果要搜索map或者man,可以使用序列"ma[n|p]"(僅指引號(hào)內(nèi)字符,下面雷同)。在方括號(hào)中,也可以制定一個(gè)范圍,例如"[a-z]"表示所有的小寫字母(使用連字號(hào) (-) 允許指定連續(xù)字符范圍),"[B-F]"表示B到F之間的所有大寫字母,"[0-9]"表示一個(gè)數(shù)字,如果要搜索一個(gè)整數(shù)(該序列只包含0到9的字符),就可以編寫"[0-9]+"(注意,使用+字符表示至少要有這樣一個(gè)數(shù)字,但可以有多個(gè)數(shù)字,所以9、83和3443等都是匹配的。)
下面看看一般表達(dá)式的結(jié)果,編寫一個(gè)實(shí)例RegularExpressionsZzy。建立幾個(gè)一般表達(dá)式,顯示其結(jié)果,讓用戶了解一下表達(dá)式是如何工作的。

該實(shí)例的核心是一個(gè)方法WriteMatches(),它把MatchCollection中的所有匹配以比較詳細(xì)的方式顯示出來(lái)。對(duì)于每個(gè)匹配,它都會(huì)顯示該匹配在輸入字符串中所在的索引,C#匹配字符串和一個(gè)略長(zhǎng)的字符串,其中包含輸入文本中至多8個(gè)外圍字符,其中至少有5個(gè)字符放在匹配的前面,至多5個(gè)字符放在匹配的后面(如果匹配的位置在輸入文本的開(kāi)頭或結(jié)尾5個(gè)字符內(nèi),則結(jié)果中匹配前后的字符就會(huì)少于4個(gè))。換言之,靠近輸入文本末尾的匹配應(yīng)是"and messaging ofd",匹配的前后各有5個(gè)字符,但位于輸入文本的***一個(gè)字上的匹配就應(yīng)是"g of data",匹配的字后只有一個(gè)字符。因?yàn)樵谠撟址暮竺媸亲址慕Y(jié)尾。這個(gè)長(zhǎng)字符串可以更清楚地表明一般表達(dá)式是在什么地方查找到匹配的:

  1. staticvoidWriteMatches(stringtext,MatchCollectionmatches)  
  2. {  
  3. Console.WriteLine("Originaltextwas:\n\n"+text+"\n");  
  4. Console.WriteLine("No.ofmatches:"+matches.Count);  
  5. foreach(MatchnextMatchinmatches)  
  6. {  
  7. intIndex=nextMatch.Index;  
  8. stringresult=nextMatch.ToString();  
  9. intcharsBefore=(Index<5)?Index:5;  
  10. intfromEnd=text.Length-Index-result.Length;  
  11. intcharsAfter=(fromEnd<5)?fromEnd:5;  
  12. intcharsToDisplay=charsBefore+charsAfter+result.Length;  
  13. Console.WriteLine("Index:{0},\tString:{1},\t{2}",Index,result,  
  14. text.Substring(Index-charsBefore,charsToDisplay));  
  15. }  

在這個(gè)方法中,處理過(guò)程是確定在較長(zhǎng)的字符串中有多少個(gè)字符可以顯示,而無(wú)需超限輸入文本的開(kāi)頭或結(jié)尾。注意在Match對(duì)象上使用了另一個(gè)屬性Value,它包含標(biāo)識(shí)該C#匹配字符串,而且,RegularExpressionsZzy只包含名為Find_po,F(xiàn)ind_n等的方法,這些方法根據(jù)本文執(zhí)行某些搜索操作。

【編輯推薦】

  1. C#字符串進(jìn)行分割
  2. 全面測(cè)試C#字符串
  3. C# out和ref傳遞數(shù)組
  4. 淺析C#定義整型數(shù)組
  5. C#數(shù)據(jù)庫(kù)連接字符串
責(zé)任編輯:佚名 來(lái)源: MSDN
相關(guān)推薦

2009-08-06 16:01:09

C#字符串函數(shù)大全

2009-08-07 13:50:11

C#字符串

2009-08-07 14:15:21

C#字符串分割

2009-08-07 14:22:56

C#字符串搜索

2009-08-07 14:34:33

C#模式字符串

2009-08-24 13:04:44

操作步驟C#字符串

2009-08-24 17:06:37

C#字符串

2009-08-26 13:24:54

C#字符串

2009-08-14 17:44:46

C#中使用正則表達(dá)式匹

2009-09-02 16:21:20

C#字符串

2009-08-07 15:58:54

C#字符串插入html

2009-08-28 10:39:37

C#數(shù)值字符串

2009-08-07 15:49:46

使用C#字符串

2009-09-02 15:53:27

C#判斷字符串應(yīng)用

2009-08-06 17:24:08

C#字符串

2009-08-07 14:02:12

C#數(shù)據(jù)庫(kù)連接字符串

2009-08-11 10:26:49

C#算法C#字符串反轉(zhuǎn)

2009-08-21 15:06:09

C#連接字符串

2009-09-04 10:26:09

Java和C#字符串類

2021-03-08 08:23:24

Java字符串截取
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)