正規表示式

2021-04-30 17:15:14 字數 2069 閱讀 3365

看nlp的時候,裡面有介紹正規表示式的,為了避免以後忘記,所以在這裡做乙個總結:

1 語法:

1.1 元字元。

. 匹配除 "/n" 之外的任何單個字元。要匹配包括 '/n' 在內的任何字元,使用象 '[./n]' 的模式。

/  將下乙個字元標記為乙個特殊字元、或乙個原義字元、或乙個 後向引用、或乙個八進位制轉義符。例如,'n' 匹配字元 "n"。 '/n' 匹配乙個換行符。序列 '//' 匹配 "/" 而 "/(" 則匹配 "("。

^ 匹配字串(一下簡稱st)的開始位置。

$ 匹配st的結束位置。

1.2 字元出現次數(一下均用a來代表該字元)

a+ >=1次

a* 任意次數

a? 0或者1次

a  a出現n次

a 至少n次

a >=n, <=m 次

1.3 選擇

[a1a2] 表示從中選擇乙個字元

[^a1a2]表示匹配非a1,a2的字元

[a-z]匹配從'a' 到 'z'的字元

1.4 分支

a1|a2 匹配a1或者a2,這裡a1,a2也可以使正規表示式。

1.5 反向引用 (**:http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm)

/b(/w+)/b/s+/1/b 可以用來匹配重複的單詞 ,像go go , 或者kitty kitty 。這個表示式首先是乙個單詞 ,也就是單詞開始 處和結束處之間的多於乙個的字母或數字 (/b(/w+)/b ),這個單詞會**獲到編號為1的分組中,然後是1個或幾個空白符 (/s+ ),最後是分組1中捕獲的內容(也就是前面匹配的那個單詞) (/1 )。

你也可以自己指定子表示式的組名 。要指定乙個子表示式的組名,請使用這樣的語法:(?/w+) (或者把尖括號換成' 也行:(?'word'/w+) ),這樣就把/w+ 的組名指定為word 了。要反向引用這個分組捕獲 的內容,你可以使用/k ,所以上乙個例子也可以寫成這樣:/b(?/w+)/b/s+/k/b 。

1.6 其他轉義

/t  分頁

/w 等同於[0-9a-za-z_]

/n  換行

/s  空格

2 示例:

e-mail:  /w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*

國際網域名稱格式如下:    

網域名稱由各國文字的特定字符集、英文本母、數字及「-」(即連字元或減號)任意組合而成,   但開頭及結尾均不能含有「-」,「-」不能連續出現   。   網域名稱中字母不分大小寫。網域名稱最長可達60個位元組(包括字尾.com、.net、.org等)。    

/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[/.][a-z]([/.][a-z])?$/i;  

/內容/i   構成乙個不區分大小寫的正規表示式;  

^   匹配開始  

$   匹配結束  

[a-z]   e-mail字首必需是乙個英文本母開頭  

([a-z0-9]*[-_]?[a-z0-9]+)*   和_a_2、aaa11、_1_a_2匹配,和a1_、aaff_33a_、a__aa不匹配,如果是空字元,也是匹配的,*表示0個或者多個。  

*表示0個或多個前面的字元.  

[a-z0-9]*   匹配0個或多個英文本母或者數字  

[-_]?   匹配0個或1「-」,因為「-」不能連續出現  

[a-z0-9]+   匹配1個或多個英文本母或者數字,因為「-」不能做為結尾  

@   必需有個有@  

([a-z0-9]*[-_]?[a-z0-9]+)+   見上面([a-z0-9]*[-_]?[a-z0-9]+)*解釋,但是不能為空,+表示乙個或者為多個。  

[/.]   將特殊字元(.)當成普通字元  

[a-z]   匹配2個至3個英文本母,一般為com或者net等.  

([/.][a-z])?   匹配0個或者1個[/.][a-z](比如.cn等)   我不知道一般.com.cn最後部份是不是都是兩位的,如果不是請修改為.

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

非負整數 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...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...