C 正規表示式簡單總結

2021-06-22 21:36:09 字數 3220 閱讀 1738

c#:

c#中驗證正規表示式的類為system.text.regularexpressions.regex

簡單的匹配方法為ismatch(4個過載方法)

正規表示式語法:

一、匹配單個字元

[ ]:從中選擇乙個字元匹配

如:單詞字元([ae])、非單詞字元([!?,;@#$*])、字母範圍([a-z])、數字範圍([0-9])、^在[ ]中為排除某些字元(如[^a]匹配除a以外的任何字元)

eg.正規表示式[ae]ffect

可匹配字串 affect,effect

注意:要在字元類中匹配連字元,那麼把連字符號作為第乙個字元列出即可。

二、特殊匹配字元

\t:匹配製表符 \r:匹配硬回車符 \n:匹配換行符

.:匹配任何除了\n以外的字元(\.則匹配該字元本身)

\w:匹配任何單詞字元(任何字母或數字)

\w:匹配任何非單詞字元(除了字母和數字以外的任何字元)

\s:匹配任何空白字元(包括空格、換行、製表符等) 

\s:匹配任何非空白字元(除了空格、換行、製表符等的任何字元)

\d:匹配任何數字字元(0~9的數字) 

\d:匹配任何非數字字元(除了0~9以外的任何字元)

^:匹配字串的開頭(或者多行模式下行的開頭)。 

$:匹配字串的結尾,或者是字串結尾「\n」之前的最後乙個字元,或者是多行模式中的行結尾。 

\a:匹配字串的開頭(忽略多行模式) \z:匹配字串的結尾或字串結尾「\n」之前的最後乙個字元(忽略多行模式)。 

\z:匹配字串的結尾。 \g:匹配當前搜尋開始的位置。 

\b:匹配單詞的邊界。 \b:匹配單詞的非邊界。 

注意:1、\a和\z在確保字串所包含的是某個表示式,而不是其他內容時很用。

eg.正規表示式\asophia\z

可匹配字串要 sophia(不含任何額外的字元、換行符或者空白。)

2、可以使用\b匹配單詞的邊界

eg.正規表示式\blet\b

可匹配字串 let

不可匹配字串letter,hamlet

三、匹配二選一

|:匹配二選一

eg.正規表示式col(o|ou)r

可匹配字串 color,colour

注意:\b(bill|ted)和\bbill|ted是不同的。

後者可以匹配malted

四、量詞匹配

*:匹配0次或多次 +:匹配1次或多次?:匹配0次或1次:恰好匹配n次

:至少匹配n次:至少匹配n次,至多匹配m次

eg.正規表示式brothers?

可匹配字串 brother,brothers

eg.正規表示式\bp\d

可匹配字串 \b以p開頭,且後跟3~5個數字結尾

注意:也可以把量詞與()一起使用,以便把該量詞應用到整個字母序列。

eg.正規表示式(the)?schoolisbeautiful.

可匹配字串 schoolisbeautiful,theschoolisbeautiful.

五、貪婪量詞

識別正規表示式和貪婪 有些量詞是貪婪的(greedy).他們會盡可能多的匹配字元。

如量詞*匹配0個或多個字元。假設要匹配字串中任何html標籤。你可能會用如下正規表示式:

<.*>

現有字串aquantifiercanbegreedy

結果<.*>把quantifiercanbegreedy都匹配上了。

要解決該問題,需要與量詞一起使用乙個特殊的非貪婪字元「?」,因此表示式變化如下:

<.*?>

這樣就可以正確匹配、、、。

六、捕獲和反向引用

():用來捕獲其中的字串

\數字:用編號來引用

eg.正規表示式 (\w)(\w)\2\1

可匹配字串abba(回文)

注意:1、反向引用用來匹配html標籤非常有效如<(\w+)>可以匹配等類似格式的標籤。

常用的c#正規表示式:

"^\d+$" //非負整數(正整數 + 0) 

"^[0-9]*[1-9][0-9]*$" //正整數 

"^((-\d+)|(0+))$" //非正整數(負整數 + 0) 

"^-[0-9]*[1-9][0-9]*$" //負整數 

"^-?\d+$" //整數 

"^\d+(\.\d+)?$" //非負浮點數(正浮點數 + 0) 

"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮點數 

"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮點數(負浮點數 + 0) 

"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //負浮點數 

"^(-?\d+)(\.\d+)?$" //浮點數 

"^[a-za-z]+$" //由26個英文本母組成的字串 

"^[a-z]+$" //由26個英文本母的大寫組成的字串 

"^[a-z]+$" //由26個英文本母的小寫組成的字串 

"^[a-za-z0-9]+$" //由數字和26個英文本母組成的字串 

"^\w+$" //由數字、26個英文本母或者下劃線組成的字串 

"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email位址 

"^[a-za-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$" //url 

/^(d|d)-((0([1-9]))|(1[1|2]))-(([0-2]([1-9]))|(3[0|1]))$/ // 年-月-日 

/^((0([1-9]))|(1[1|2]))/(([0-2]([1-9]))|(3[0|1]))/(d|d)$/ // 月/日/年 

"^([w-.]+)@(([[0-9].[0-9].[0-9].)|(([w-]+.)+))([a-za-z]|[0-9])(]?)$" //emil 

"(d+-)?(d-?d|d-?d|^d)(-d+)?" //**號碼 

"^(d|1dd|2[0-4]d|25[0-5]).(d|1dd|2[0-4]d|25[0-5]).(d|1dd|2[0-4]d|25[0-5]).(d|1dd|2[0-4]d|25[0-5])$" //ip位址 

正規表示式簡單總結

正規表示式,又稱規則表示式。英語 regular expression,在 中常簡寫為regex regexp或re 由一類特殊字元及文字字元所編寫的模式,其中有些字元 元字元 不表示字元字面意義,而表示控制或通配的功能。程式支援 grep,sed,awk,vim,less,nginx,varnis...

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

C 正規表示式總結

1.獲取html標籤中的所有文字 string s regex.match scon,groups 1 value s 標題文字 string s1 regex.match scon,value s1 替換 system.text.regularexpressions.regex.replace s...