国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

.NET正則表達(dá)式基礎(chǔ)學(xué)習(xí)資料

開發(fā) 后端
本文提供了一些.NET正則表達(dá)式基礎(chǔ)學(xué)習(xí)資料,并提供了一些簡單的示例。

.NET正則表達(dá)式基礎(chǔ):簡單表達(dá)式

最簡單的正則表達(dá)式大家都已熟悉,即文字字符串。特定的字符串可通過文字本身加以描述;像 foo 這樣的正則表達(dá)式模式可精確匹配輸入的字符串 foo。在本例中,也將匹配如下輸入:The foo d was quite tasty,如果希望精確匹配,這可能不是預(yù)期結(jié)果。

當(dāng)然,使用正則表達(dá)式匹配等于它自身的精確字符串是沒有價(jià)值的實(shí)現(xiàn),不能體現(xiàn)正則表達(dá)式的真正作用。假如不查找 foo,而是查找以字母 f 開頭的所有單詞,或所有 3 個(gè)字母的單詞,那該怎么辦?目前,這超出了文字字符串的合理范圍。我們需要更加深入地研究正則表達(dá)式。下面是一個(gè)文字表達(dá)式示例及一些匹配的輸入。

模式

輸入(匹配)

foo

foofood、foot、“There's evil afoot.”

 
.NET正則表達(dá)式基礎(chǔ):限定符

限定符提供了一種簡單方法,用于指定在模式中允許特定字符或字符集自身重復(fù)出現(xiàn)的次數(shù)。有 3 個(gè)非顯式限定符:

  1. *,描述“出現(xiàn) 0 或多次”。

  2. +,描述“出現(xiàn) 1 或多次”。

  3. ?,描述“出現(xiàn) 0 或 1 次”。

限定符始終引用限定符前(左邊)的模式,通常是單個(gè)字符,除非使用括號創(chuàng)建模式組。下面是一些模式示例及匹配的輸入。

模式

輸入(匹配)

fo*

foofoe、food、fooot、“forget it”、funny、 puffy

fo+

foofoe、food、foot、“forget it”

fo?

foo、foe、food、foot、“forget it”、funny、puffy

除了指定給定模式準(zhǔn)確出現(xiàn) 0 或 1 次之外,? 字符還可強(qiáng)制模式或子模式匹配數(shù)目最少的字符(如果匹配輸入字符串中的多個(gè)字符)。

除了非顯式限定符(一般叫做限定符,但為區(qū)別于下一組,故稱非顯式限定符)之外,還有顯式限定符。在模式出現(xiàn)次數(shù)方面,限定符的概念非常模糊。使用顯式限定符則可準(zhǔn)確指定數(shù)字、范圍或數(shù)字集。顯式限定符位于所應(yīng)用的模式的后邊,這一點(diǎn)與正則限定符一樣。顯式限定符使用花括號 {} 及其中的數(shù)字值表示模式出現(xiàn)次數(shù)的上下限。例如,x{5} 將準(zhǔn)確匹配 5 個(gè) x 字符 (xxxxx)。如果僅指定一個(gè)數(shù)字,則表示次數(shù)上限;如果數(shù)字后跟一個(gè)逗號,如 x{5,},表示匹配任何出現(xiàn)次數(shù)大于 4 的 x 字符。下面是一些模式示例及匹配的輸入。

模式

輸入(匹配)

ab{2}c

abbc、aaabbccc

ab{,2}c

acabcabbc、aabbcc

ab{2,3}c

abbcabbbc、aabbcc、aabbbcc

 
.NET正則表達(dá)式基礎(chǔ):元字符

在正則表達(dá)式中,有一種意義特殊的構(gòu)造,即元字符。目前已知的元字符有很多,如 *?+{} 字符。其他字符在正則表達(dá)式語言中都有特殊的含義。這些字符包括:$ ^ . [ ( | ) ] \

.(句點(diǎn)或點(diǎn))元字符是最簡單但最常用的一個(gè)字符。它可匹配任何單字符。如果要指定某些模式可包含任意組合的字符,使用句點(diǎn)非常有用,但一定要在特定長度范圍內(nèi)。此外,我們知道表達(dá)式將對包含在較長字符串中的所有模式進(jìn)行匹配,假如只需要精確匹配模式,又該怎么辦?這在驗(yàn)證方案中經(jīng)常出現(xiàn),例如,要確保用戶輸入的郵政編碼或電話號碼的格式正確。使用 ^ 元字符可指定字符串(或行)的開始,使用 $ 元字符可指定字符串(或行)的結(jié)束。通過將這些字符添加到模式的開始和結(jié)束處,可強(qiáng)制模式僅匹配精確匹配的輸入字符串。如果 ^ 元字符用在方括號 [ ] 指定的字符類的開頭,也有特殊的含義。具體內(nèi)容見下。

\ (反斜杠)元字符既可根據(jù)特殊含義“轉(zhuǎn)義”字符,也可指定預(yù)定義集合元字符的實(shí)例。同樣,具體內(nèi)容見下。為了在正則表達(dá)式中包括文字樣式的元字符,必須使用反斜杠進(jìn)行“轉(zhuǎn)義”。例如,如果要匹配以“c:\”開始的字符串,可使用:^c:\\。注意,要使用 ^ 元字符指出字符串必須以此模式作為開始,然后用反斜杠元字符轉(zhuǎn)義文字反斜杠。

|(管道)元字符用于交替指定,特別用于在模式中指定“此或彼”。例如,a|b 將匹配包含“a”或“b”的任何輸入內(nèi)容,這與字符類 [ab] 非常類似。

最后,括號 ( ) 用于給模式分組。它允許使用限定符讓一個(gè)完整模式出現(xiàn)多次。為了便于閱讀,或分開匹配特定的輸入部分,可能允許分析或重新設(shè)置格式。

下面列出元字符的一些使用示例。

模式

輸入(匹配)

.

abc123

.*

Abc, 123, 任意字符串, 無字符時(shí)也匹配

^c:\\

c:\windowsc:\\\\\c:\foo.txtc:\ 后跟任何其他內(nèi)容

abc$

abc123abc abc 結(jié)束的任意字符串

(abc){2,3}

abcabcabcabcabc

 
.NET正則表達(dá)式基礎(chǔ):字符類

字符類是正則表達(dá)式中的“迷你”語言,在方括號 [ ] 中定義。最簡單的字符類只不過是括號中的一個(gè)字符表,如 [aeiou]。在表達(dá)式中使用字符類時(shí),可在模式的此位置使用其中任何一個(gè)字符(但只能使用一個(gè)字符,除非使用了限定符)。請注意,不能使用字符類定義單詞或模式,只能定義單個(gè)字符。

要指定任何數(shù)值數(shù)字,可以使用字符類 [0123456789]。但是,由于這樣使用字符不大方便,所以要通過在括號中使用連字符 - 來定義字符的范圍。連字符在字符類中有特殊的含義(不是在正則表達(dá)式中,因此,準(zhǔn)確地說它不能叫正則表達(dá)式元字符),且僅在連字符不是第一個(gè)字符時(shí),連字符才在字符類中有特殊含義。要使用連字符指定任何數(shù)值數(shù)字,可以使用 [0-9]。小寫字母也一樣,可以使用 [a-z],大寫字母可以使用 [A-Z]。連字符定義的范圍取決于使用的字符集。因此,字符在(例如)ASCII 或 Unicode 表中出現(xiàn)的順序確定了在范圍中包括的字符。如果需要在范圍中包括連字符,將它指定為第一個(gè)字符。例如:[-.?] 將匹配 4 個(gè)字符中任何一個(gè)字符(注意,最后的字符是個(gè)空格)。另請注意,正則表達(dá)式元字符在字符類中不做特殊處理,所以這些元字符不需要轉(zhuǎn)義。考慮到字符類是與其他正則表達(dá)式語言分開的一種語言,因此字符類有自己的規(guī)則和語法。

如果使用字符 ^ 作為字符類的第一個(gè)字符來否定此類,也可以匹配字符類成員以外的任何字符。因此,要匹配任何非元音字符,可以使用字符類 [^aAeEiIoOuU]。注意,如果要否定連字符,應(yīng)將連字符作為字符類的第二個(gè)字符,如 [^-]。記住,^ 在字符類中的作用與它在正則表達(dá)式模式中的作用完全不同。

下面列出操作中使用的一些字符類。

模式

輸入(匹配)

^b[aeiou]t$

Batbetbitbotbut

^[0-9]{5}$

11111, 12345, 99999

^c:\\

c:\windowsc:\\\\\c:\foo.txtc:\ 后跟任何其他內(nèi)容

abc$

abc123abc abc 結(jié)束的任意字符串

(abc){2,3}

abcabcabcabcabc

^[^-][0-9]$

012、... (不匹配 -0、-1、 -2 等)

在 .NET Framework 的下一版中,代碼名“Whidbey”作為一種新功能被添加到字符類中,稱作字符類差 (character class subtraction)。它的主要作用是,允許從一個(gè)字符類中減去另一個(gè)字符類,可提供更可讀的方式描述某些模式。它的語法類似 [a-z-[aeiou]],匹配所有的小寫輔音字母。

.NET正則表達(dá)式基礎(chǔ):預(yù)定義的集合元字符

使用目前提供的工具可以完成很多工作。但是,要使用 [0-9] 表示模式中的每個(gè)數(shù)值數(shù)字,或(更糟)使用 [0 -9a -zA-Z]表示任何字母數(shù)字字符,還有一段相當(dāng)漫長的過程。為了減輕處理這些常用但冗長模式的痛苦,事先定義了預(yù)定義元字符集合。正則表達(dá)式的不同實(shí)現(xiàn)定義了不同的預(yù)定義元字符集合,下面描述的預(yù)定義元字符集合在 .NET Framework 中得到 System.Text.RegularExpressions API 的支持。這些預(yù)定義元字符的標(biāo)準(zhǔn)語法是,在反斜杠 \ 后跟一個(gè)或多個(gè)字符。多數(shù)預(yù)定義元字符只有一個(gè)字符,它們的使用很容易,是冗長字符類的理想替代字符。以下是兩個(gè)示例:\d 匹配所有數(shù)值數(shù)字,\w 匹配所有單詞字符(字母數(shù)字加下劃線)。例外情況是一些特定字符代碼匹配,此時(shí)必須指定所匹配字符的地址,如 \u000D 將匹配 Unicode 回車符。下面列出一些最常用的字符類及其等效的元字符。

元字符

等效字符類

\a

匹配鈴聲(警報(bào));\u0007

\b

匹配字符類外的字邊界,它匹配退格字符,\u0008

\t

匹配制表符,\u0009

\r

匹配回車符,\u000D

\w

匹配垂直制表符,\u000B

\f

匹配換頁符,\u000C

\n

匹配新行,\u000A

\e

匹配轉(zhuǎn)義符,\u001B

\040

匹配 3 位 8 進(jìn)制 ASCII 字符。\040 表示空格(十進(jìn)制數(shù) 32)。

\x20

使用 2 位 16 進(jìn)制數(shù)匹配 ASCII 字符。此例中,\x2- 表示空格。

\cC

匹配 ASCII 控制字符,此例中是 ctrl-C。

\u0020

使用 4 位 16 進(jìn)制數(shù)匹配 Unicode 字符。此例中 \u0020 是空格。

\*

不代表預(yù)定義字符類的任意字符都只作為該字符本身對待。因此,\* 等同于 \x 2A(是文字 *,不是 * 元字符)。

\p{name}

匹配已命名字符類“name”中的任意字符。支持名稱是 Unicode 組和塊范圍。例如,Ll、Nd、Z、IsGreek、IsBoxDrawing 和 Sc(貨幣)。

\p{name}

匹配已命名字符類“name”中不包括的文本。

\w

匹配任意單詞字符。對于非 Unicode 和 ECMAScript 實(shí)現(xiàn),這等同于 [a-zA-Z_0-9]。在 Unicode 類別中,這等同于 [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]

\W

\w 的否定,等效于 ECMAScript 兼容集合 [^a-zA-Z_0-9] 或 Unicode 字符類別 [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]

\s

匹配任意空白區(qū)域字符。等效于 Unicode 字符類 [\f\n\r\t\v\x85\p{Z}]。如果使用 ECMAScript 選項(xiàng)指定 ECMAScript 兼容方式,\s 等效于 [ \f\n\r\t\v] (請注意前導(dǎo)空格)。

\S

匹配任意非空白區(qū)域字符。等效于 Unicode 字符類別 [^\f\n\r\t\v\x85\p{Z}]。如果使用 ECMAScript 選項(xiàng)指定 ECMAScript 兼容方式,\S 等效于 [^ \f\n\r\t\v] (請注意 ^ 后的空格)。

\d

匹配任意十進(jìn)制數(shù)字。在 ECMAScript 方式下,等效于 Unicode 的 [\p{Nd}]、非 Unicode 的 [0-9]

\D

匹配任意非十進(jìn)制數(shù)字。在 ECMAScript 方式下,等效于 Unicode 的 [\p{Nd}]、非 Unicode 的 [^0-9]

.NET正則表達(dá)式基礎(chǔ):表達(dá)式示例

很多人都喜歡通過示例學(xué)習(xí),下面即提供一些表達(dá)式示例。

模式

說明

^\d{5}$

5 個(gè)數(shù)值數(shù)字,如美國郵政編碼。

^(\d{5})|(\d{5}-\d{4}$

5 個(gè)數(shù)值數(shù)字或 5 個(gè)數(shù)字-短劃線-4 個(gè)數(shù)字。匹配 5 位數(shù)字格式的美國郵政編碼,或 5 位數(shù)字 + 4 位數(shù)字格式的美國郵政編碼。

^(\d{5}(-\d{4})?$

與前一個(gè)相同,但更有效。使用 ? 可使模式中的 4 位數(shù)字成為可選部分,而不是要求分別比較不同的兩個(gè)模式(通過另一種方式)。

^[+-]?\d+(\.\d+)?$

匹配任意有可選符號的實(shí)數(shù)。

^[+-]?\d*\.?\d*$

與上一個(gè)相同,但也匹配空字符串。

^(20|21|22|23|[01]\d)[0-5]\d$

匹配 24 小時(shí)制時(shí)間值。

/\*.*\*/

匹配 C 語言風(fēng)格的注釋 /* ... */

【編輯推薦】

  1. 什么是正則表達(dá)式:其歷史與.NET框架的關(guān)系
  2. 詳解C#正則表達(dá)式
  3. 利用正則表達(dá)式使C#判斷輸入日期格式是否正確
  4. .NET下正則表達(dá)式應(yīng)用四例
  5. JAVA正則表達(dá)式4種常用的功能
責(zé)任編輯:yangsai 來源: MSDN
相關(guān)推薦

2016-11-10 16:21:22

Java 正則表達(dá)式

2009-08-07 14:24:31

.NET正則表達(dá)式

2012-01-12 10:21:57

正則表達(dá)式

2018-09-27 15:25:08

正則表達(dá)式前端

2020-09-04 09:16:04

Python正則表達(dá)式虛擬機(jī)

2017-12-27 15:25:50

LinuxBash正則表達(dá)式

2009-08-13 15:24:27

C#正則表達(dá)式

2009-08-11 13:00:41

C#正則表達(dá)式

2009-09-08 09:32:13

正則表達(dá)式學(xué)習(xí)

2024-09-14 09:18:14

Python正則表達(dá)式

2009-08-24 17:14:41

正則表達(dá)式C#和.NET框架

2009-03-24 08:56:15

正則表達(dá)式格式清理字符串

2010-01-05 17:46:04

.NET Framew

2010-03-25 18:25:36

Python正則表達(dá)式

2022-01-04 11:35:03

Linux Shel正則表達(dá)式Linux

2009-09-16 17:15:57

正則表達(dá)式引擎

2023-09-13 08:12:45

2021-01-27 11:34:19

Python正則表達(dá)式字符串

2017-05-12 10:47:45

Linux正則表達(dá)式程序基礎(chǔ)

2009-02-18 09:48:20

正則表達(dá)式Java教程
點(diǎn)贊
收藏

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

亚洲午夜激情av| 国产成人精品一区二区三区四区| 成人日韩欧美| 日韩中文字幕一区| 亚洲精美色品网站| 久久久久国色av免费看影院| 日韩av片子| 色yeye免费人成网站在线观看| 久久久久福利视频| 欧美亚洲午夜视频在线观看| 欧美日韩一区国产| 成人99免费视频| 日韩欧美高清在线播放| 888av在线视频| 男女视频在线看| 国产亚洲福利社区| 国产一区二区激情| 亚洲午夜精品一区二区三区他趣| 乱码第一页成人| www.爱久久| 麻豆影视国产在线观看| 亚洲国产精品毛片av不卡在线| 91久久极品少妇xxxxⅹ软件| 亚洲图片制服诱惑| 精品久久中文字幕久久av| 激情综合色综合久久| 国产亚洲欧美日韩在线观看一区二区 | 欧美日韩一区在线| 99久久综合精品| 欧美日韩亚洲一区在线观看| 2020国产精品小视频| wwwww在线观看免费视频| 免费日韩中文字幕| 欧美人xxxxx| 欧美一区二区三区免费观看 | 91丨porny丨中文| 黄色成人精品网站| 麻豆精品一区| 欧美巨大xxxx做受沙滩| 激情六月婷婷| 美女扒开大腿让男人桶| 成人看片视频| 91精品国产91久久久久久| 亚洲国产精品久久久| 午夜激情综合网| 99久久精品免费| 午夜在线精品偷拍| 日本道不卡免费一区| 亚洲男人在线| 91超碰在线免费| 免费国产在线观看| 少妇网站在线观看| 高清无码视频直接看| 精品国产日本| 国产精品久久久久久超碰| 中文字幕一精品亚洲无线一区| 欧美欧美欧美欧美| 亚洲mv在线观看| 欧美国产日本视频| 粉嫩欧美一区二区三区高清影视| 亚洲每日更新| 999久久久91| 精品综合久久88少妇激情| 国产亚洲一区二区手机在线观看| 成人影院在线观看| 国产专区在线| 国产69精品久久久久孕妇| 99热手机在线| r级无码视频在线观看| 少妇免费毛片久久久久久久久| 亚洲va国产va天堂va久久| 96精品视频在线| 久久综合色影院| 亚洲深夜福利网站| 精品国产电影一区二区| 欧美日韩国产免费一区二区| 欧美日韩国产专区| 一区二区三区日本| 国产农村妇女毛片精品久久麻豆| 国产成人a级片| 久久福利视频一区二区| 亚洲影音先锋| 在线成人欧美| 欧美日韩国产一区精品一区| 日本成人小视频| 不卡中文一二三区| 免费成人高清在线视频theav| 亚洲精品国产九九九| 日韩三区四区| 日本综合视频| abab456成人免费网址| 韩日成人影院| 日本成人三级电影| 免费观看一级欧美片| 男人久久天堂| 国产高清视频色在线www| 成人av影院在线观看| 丝袜中文在线| 欧美亚洲系列| 91九色美女在线视频| 色网在线免费观看| 自拍网站在线观看| 精品国产欧美日韩一区二区三区| 高清电影一区| 国产一区高清| 精品三级久久久| 亚洲精品v亚洲精品v日韩精品| 免费看一区二区三区| 51精品国产| 先锋影音国产精品| 国产成人ay| 亚洲成人国产| 亚洲精品综合| 日韩av在线发布| 国产专区欧美精品| 成人综合在线观看| 2021久久国产精品不只是精品| 成人精品视频一区| 国产午夜亚洲精品羞羞网站| 中文字幕一区二区三区在线播放| 亚洲卡通欧美制服中文| 亚洲男人的天堂av| 亚洲福利一区二区| 欧美在线观看视频一区二区三区| 91精品中文字幕一区二区三区| 欧美v日韩v国产v| 亚洲性视频网站| 欧美国产视频一区二区| 国产不卡视频在线| 91午夜理伦私人影院| 美女一区视频| 黄色特一级视频| 亚洲中文字幕久久精品无码喷水| 污版网站在线观看| 九色在线免费| 不卡的av影片| 国产精品视频一区二区三区| 亚洲欧洲免费| 欧美精品网站| 久久草av在线| 国产欧美精品区一区二区三区| 亚洲一区影音先锋| 538在线一区二区精品国产| 国产婷婷成人久久av免费高清| 久久影视电视剧免费网站| 国产成人精品日本亚洲| 国产精品一区二区三区免费观看| 亚洲在线播放电影| 凹凸日日摸日日碰夜夜爽1| 在线手机福利影院| 成a人片在线观看| 97成人超碰| 欧美日韩一二三四| 水蜜桃久久夜色精品一区的特点 | 毛片精品免费在线观看| 欧美又大又粗又长| 国产精品一区二区免费看| 椎名由奈jux491在线播放| 欧美日韩在线观看不卡| 国产女人在线视频| 日韩三级影视| 成人网18免费网站| 日本亚洲三级在线| 中文字幕不卡在线| 欧美日韩久久久一区| 日韩在线免费高清视频| 国产欧美日韩中文字幕| 一区二区三区我不卡| 99视频高清| 九义人在线观看完整免费版电视剧| 福利一区视频| 天天综合亚洲| 国产精品资源站在线| 夜夜操天天操亚洲| 欧美精品一区二区三区久久久| 久久久免费电影| 免费国产一区二区| 在线免费观看视频黄| 国产精品剧情| 99精品国产高清一区二区麻豆| 亚洲伦伦在线| 久久久www免费人成精品| 欧美日韩精品一区视频| 久久精品男人天堂| 国产日韩欧美一区二区| 91av俱乐部| 影音先锋男人在线资源| 无码少妇一区二区三区| 国产一区二区三区香蕉| 精品日本高清在线播放| 久久精品国产一区二区三区 | 精品1区2区在线观看| 国产91精品黑色丝袜高跟鞋| 日韩在线导航| 777视频在线观看| 蜜桃av在线播放| 牛夜精品久久久久久久99黑人| 成人av免费在线观看| 欧美精品第一页| 日韩美女视频免费在线观看|