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

首頁 > 編程 > .NET > 正文

.NET正則表達式使用高級技巧之工作特點

2024-07-10 13:13:00
字體:
來源:轉載
供稿:網友

  語法:??,*?,+?,{n}?,{n,m}?

  涵義:簡單說,后面的這個?(lazy符)告訴正則引擎,它前面的表達式匹配到最短的匹配項就不用匹配下去了,如??,?本身匹配0-1個匹配項,那么??就取最短的,匹配0個項就不匹配下去了,同理,*?匹配0個,+?匹配1個,{n}?匹配n個,{n,m}?匹配n個。當用@”/w*?”匹配”abcd”時,會有五次成功匹配,每次都匹配的結果都是空字符串,為什么會是5次呢,這是因為正則引擎在匹配一個表達式時是一個字符一個字符對比下去的,每成功匹配一次,就前進一下。

  判斷表達式

  語法:

  1、a|b,這個是最基本的,a或者b,其實這個不能算判斷

  2、(?(expression)yes-expression|no-expression),其中no-expression為可選項,意為,如果expression成立,則要求匹配yes-expression,否則要求匹配no-expression

  3、(?(group-name)yes-expressioin|no-expression),其中no-expression為可選項,意為,如果名為group-name的組匹配成功,則要求匹配yes-expression,否則要求匹配no-expression

  判斷表達式還是很好理解的,唯有一點要注意:@"(?(a)a|b)"不能匹配"aa",為什么呢?要怎么樣寫才能匹配呢,大家先想想……

  我們應該這樣寫regex: @”(?(a)aa|b)”,請注意,判斷式中的內容并不會做為yes-expression或no-expression表達式的一部分。

  .net 的正則引擎工作特點

  .net的正則引擎工作方式大多數和我們“想當然”的方式一樣,只是有幾點要注意:

  1、.net framework 正則表達式引擎盡可能的匹配多的字符(貪婪)。正是由于這一點,所以,不要用@"<.*>(.*)</.*>"這樣的正則式來試圖找出一個html文檔中的所有innertext。(我也正是在網上看到有人這樣寫正則式才決定要寫《正則表達式 高級技巧》的,呵呵)

  2、.net framework 正則表達式引擎是回溯的正則表達式匹配器,它并入了傳統的非確定性有限自動機 (nfa) 引擎(例如 perl、python使用的引擎)。這使其有別于更快的、但功能更有限的純正則表達式確定性有限自動機 (dfa) 引擎。.net framework 正則表達式引擎盡量匹配成功,所以,當@"/w+/.(.*)/./w+"中的.*把www. .csdn.net中的.csdn.net都匹配完了,讓后面的/./w+沒得字符去匹配時,引擎會進行回溯,以得到成功的匹配。
 
  net framework 正則表達式引擎還包括了一組完整的語法,讓程序員能夠操縱回溯引擎。包括:

  “惰性”限定符:??、*?、+?、{n,m}?。這些惰性限定符指示回溯引擎首先搜索最少數目的重復。與之相反,普通的“貪婪的”限定符首先嘗試匹配最大數目的重復。

  從右到左匹配。這在從右到左而非從左到右搜索的情況下十分有用,或者在從模式的右側部分開始搜索比從模式的左側部分開始搜索更為有效的情況下十分有用。

  3、.net framework 正則表達式引擎在(expression1|expression2|expression3)這樣情況下,expression1總是最先得到嘗試,再依次是expression2和expression3

publicstaticvoidmain()
{
strings="thinisaasp.netdeveloper.";
regexreg=newregex(@"(/w{2}|/w{3}|/w{4})",regexoptions.compiled|regexoptions.ignorecase);
matchcollectionmc=reg.matches(s);
foreach(matchminmc)
console.writeline(m.value);
console.readline();
}

  輸出結果是: ‘th’ ‘in’ ‘is’ ‘as’ ‘ne’ ‘de’ ‘ve’ ‘lo’ ‘pe’

  附表

轉義符說明
一般字符除 .$ ^ { [ ( | ) * + ? / 外,其他字符與自身匹配。
/a 與響鈴(警報)/u0007 匹配。
/b 在正則表達式中,/b 表示單詞邊界(在 /w 和 /w 之間),不過,在 [] 字符類中,/b 表示退格符。在替換模式中,/b 始終表示退格符。
/t 與 tab 符 /u0009 匹配。
/r 與回車符 /u000d 匹配。
/v 與垂直 tab 符 /u000b 匹配。
/f 與換頁符 /u000c 匹配。
/n 與換行符 /u000a 匹配。
/e 與 esc 符 /u001b 匹配。
/040 將 ascii 字符匹配為八進制數(最多三位);如果沒有前導零的數字只有一位數或者與捕獲組號相對應,則該數字為后向引用。例如,字符/040 表示空格。
/x20 使用十六進制表示形式(恰好兩位)與 ascii 字符匹配。
/cc 與 ascii 控制字符匹配;例如,/cc 為 ctrl-c。
/u0020 使用十六進制表示形式(恰好四位)與 unicode 字符匹配。
/ 在后面帶有不識別為轉義符的字符時,與該字符匹配。例如,/* 與 /x2a 相同。
字符類 說明
. 匹配除 /n 以外的任何字符。如果已用 singleline 選項做過修改,則句點字符可與任何字符匹配。
[ aeiou ] 與指定字符集中包含的任何單個字符匹配。
[^ aeiou ] 與不在指定字符集中的任何單個字符匹配。
[0-9a-fa-f] 使用連字號 (–) 允許指定連續字符范圍。
/p{ name }

與 {name} 指定的命名字符類中的任何字符都匹配。支持的名稱為 unicode 組和塊范圍。例如,ll、nd、z、isgreek、isboxdrawing??梢允褂?getunicodecategory 方法找到某個字符所屬的 unicode 類別。

/p{ name } 與在 {name} 中指定的組和塊范圍不包括的文本匹配。
/w 與任何單詞字符匹配。等效于 unicode 字符類別 [/p{ll}/p{lu}/p{lt}/p{lo}/p{nd}/p{pc}/p{lm}]。如果用 ecmascript 選項指定了符合 ecmascript 的行為,則 /w 等效于 [a-za-z_0-9]。
/w 與任何非單詞字符匹配。等效于 unicode 字符類別 [^/p{ll}/p{lu}/p{lt}/p{lo}/p{nd}/p{pc}/p{lm}]。如果用 ecmascript 選項指定了符合 ecmascript 的行為,則 /w 等效于 [^a-za-z_0-9]。
/s 與任何空白字符匹配。等效于 unicode 字符類別 [/f/n/r/t/v/x85/p{z}]。如果用 ecmascript 選項指定了符合 ecmascript 的行為,則 /s 等效于 [ /f/n/r/t/v]。
/s 與任何非空白字符匹配。等效于 unicode 字符類別 [^/f/n/r/t/v/x85/p{z}]。如果用 ecmascript 選項指定了符合 ecmascript 的行為,則 /s 等效于 [^ /f/n/r/t/v]。
/d 與任何十進制數字匹配。對于 unicode 類別的 ecmascript 行為,等效于 /p{nd},對于非 unicode 類別的 ecmascript 行為,等效于 [0-9]。
/d 與任何非數字匹配。對于 unicode 類別的 ecmascript 行為,等效于 /p{nd},對于非 unicode 類別的 ecmascript 行為,等效于 [^0-9]。
斷言 說明
>^ 指定匹配必須出現在字符串的開頭或行的開頭。
$ 指定匹配必須出現在以下位置:字符串結尾、字符串結尾處的 /n 之前或行的結尾。
/a 指定匹配必須出現在字符串的開頭(忽略 multiline 選項)。
/z 指定匹配必須出現在字符串的結尾或字符串結尾處的 /n 之前(忽略 multiline 選項)。
/z 指定匹配必須出現在字符串的結尾(忽略 multiline 選項)。
/g 指定匹配必須出現在上一個匹配結束的地方。與 match.nextmatch() 一起使用時,此斷言確保所有匹配都是連續的。
/b 指定匹配必須出現在 /w(字母數字)和 /w(非字母數字)字符之間的邊界上。匹配必須出現在單詞邊界上,即出現在由任何非字母數字字符分隔的單詞中第一個或最后一個字符上。
/b 指定匹配不得出現在 /b 邊界上。
限定符 說明
* 指定零個或更多個匹配;例如 /w* 或 (abc)*。等效于 {0,}。
+ 指定一個或多個匹配;例如 /w+ 或 (abc)+。等效于 {1,}。
? 指定零個或一個匹配;例如 /w? 或 (abc)?。等效于 {0,1}。
{ n } 指定恰好 n 個匹配;例如 (pizza){2}。
{ n ,} 指定至少 n 個匹配;例如 (abc){2,}。
{ n , m } 指定至少 n 個但不多于 m 個匹配。
*? 指定盡可能少地使用重復的第一個匹配(等效于 lazy *)。
+? 指定盡可能少地使用重復但至少使用一次(等效于 lazy +)。
?? 指定使用零次重復(如有可能)或一次重復 (lazy ?)。
{ n }? 等效于 {n} (lazy {n})。
{ n ,}? 指定盡可能少地使用重復但至少使用 n 次 (lazy {n,})。
{ n , m }? 指定介于 n 次和 m 次之間、盡可能少地使用重復 (lazy {n,m})。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久久久久| 在线观看国产精品日韩av| 亚洲福利在线观看| 久久精品国产96久久久香蕉| 日韩在线www| 国产成人黄色av| 日本精品视频网站| 亚洲欧洲日韩国产| 亚洲国产精品久久91精品| 国产成人久久久精品一区| 亚洲成人av在线| 欧美成人免费视频| 成人久久久久久久| 精品视频在线播放| 久久久久久com| 久久久视频免费观看| 欧美老妇交乱视频| 中文字幕在线看视频国产欧美| 亚洲第一精品夜夜躁人人爽| 久久99青青精品免费观看| 91沈先生在线观看| 国产精品美女久久久久av超清| 久久999免费视频| 在线亚洲国产精品网| 91色视频在线观看| 欧美丰满少妇xxxx| 亚洲美女又黄又爽在线观看| 亚洲免费av网址| 岛国av午夜精品| 欧美成人精品h版在线观看| 1769国产精品| 日韩最新av在线| 欧美午夜女人视频在线| 97香蕉超级碰碰久久免费软件| 欧美日韩午夜激情| 91精品视频网站| 裸体女人亚洲精品一区| 欧美激情视频网址| 国产亚洲精品久久久久动| 亚洲精品成人久久久| 国产香蕉精品视频一区二区三区| 爽爽爽爽爽爽爽成人免费观看| 欧美日韩精品在线视频| 国产成人一区二区三区| 久久久国产精品一区| 欧美美女15p| 国产成人精品一区二区三区| 亚洲图片欧美日产| 国产一区二区久久精品| 亚洲在线一区二区| 91日本在线观看| 日韩精品视频免费专区在线播放| 亚洲精品综合精品自拍| 欧美激情第一页xxx| 欧美激情国产精品| 成人免费福利在线| 日韩欧美中文在线| 日韩在线观看免费av| 久久夜色撩人精品| 北条麻妃99精品青青久久| 日韩欧美在线观看视频| 国产成人在线一区| 中文字幕不卡av| 8090理伦午夜在线电影| 日本久久中文字幕| 国产精品丝袜高跟| 青青在线视频一区二区三区| 91成品人片a无限观看| 97超碰国产精品女人人人爽| 国产精品视频内| 久久精品国产一区二区三区| 亚洲成成品网站| 久热爱精品视频线路一| 国产一区二区三区四区福利| 国产精品入口免费视频一| 久久久久久久久网站| 精品国产一区二区三区久久| 国产日韩专区在线| 91精品国产自产在线观看永久| 久久久久久久久久久网站| 日韩中文字幕不卡视频| 欧美成人免费在线视频| 亚洲国产精品推荐| 国产精品久久久久久亚洲影视| 成人激情综合网| 欧美在线视频免费观看| 亚洲精品成人久久电影| 国产欧美一区二区| 欧美激情亚洲自拍| 日本精品久久久久久久| 亚洲精品国产美女| 亚洲va久久久噜噜噜久久天堂| 欧美精品中文字幕一区| 97超碰国产精品女人人人爽| 欧美成人午夜激情在线| 成人乱色短篇合集| 91精品国产高清自在线| 美女黄色丝袜一区| 亚洲欧美激情视频| 理论片在线不卡免费观看| 国产国语刺激对白av不卡| 欧美整片在线观看| 亚洲自拍小视频免费观看| 国产成人精品999| 国产日韩视频在线观看| 国产成人在线一区二区| 久久久亚洲影院你懂的| 欧美极品少妇与黑人| 欧美一区二区大胆人体摄影专业网站| 日韩国产欧美精品在线| 欧美激情2020午夜免费观看| 国产免费观看久久黄| 2019中文字幕在线观看| 国产成人拍精品视频午夜网站| 色综合天天狠天天透天天伊人| 国产成人精品一区二区在线| 国产日韩一区在线| 久久国产加勒比精品无码| 国产精品精品国产| 2019中文字幕在线| 97国产精品人人爽人人做| 日韩av在线精品| 中文字幕亚洲无线码在线一区| 亚洲男人天堂网| 亚洲精品自拍第一页| 成人av在线天堂| 国产美女直播视频一区| 久久亚洲综合国产精品99麻豆精品福利| 亚洲精品乱码久久久久久金桔影视| 欧美日韩视频在线| 亚洲精品网址在线观看| 欧美在线观看一区二区三区| 久久国产天堂福利天堂| 狠狠色狠狠色综合日日小说| 97精品国产97久久久久久| 国产精品九九九| 午夜精品免费视频| 国产日韩精品在线| 日韩av在线影视| 国产精品第100页| 欧美极度另类性三渗透| 亚洲成人久久电影| 日韩欧美在线视频日韩欧美在线视频| 国产欧美日韩视频| 深夜精品寂寞黄网站在线观看| 国产丝袜一区二区三区| 超在线视频97| 亚洲综合在线小说| 搡老女人一区二区三区视频tv| 欧美精品做受xxx性少妇| 国产精品国产福利国产秒拍| 久久理论片午夜琪琪电影网| 久久久女人电视剧免费播放下载| 欧美激情xxxxx| 欧美日韩999| 国产精品久久久久久久久久尿| 精品国产一区二区三区久久狼黑人| 亚洲最大的免费| 久久久久久久91| 亚洲无限av看| 国产91成人在在线播放| 亚洲自拍欧美色图| 91日韩在线播放| 成人97在线观看视频|