正則表達式-語法大全


一、基本概念
        正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。
許多程序設計語言都支持利用正則表達式進行字符串操作。例如,在Perl中就內建了一個功能強大的正則表達式引擎。正則表達式這個概念最初是由Unix中的工具軟件(例如sed和grep)普及開的。正則表達式通常縮寫成“regex”,單數有regexp、regex,復數有regexps、regexes、regexen。
 
二、簡介
        正則表達式是對字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”))操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯。正則表達式是一種文本模式,該模式描述在搜索文本時要匹配的一個或多個字符串。
 
三、語法介紹
1、常用的元字
代碼
說明
.
匹配除換行符以外的任意字符
\w
匹配字母或數字或下划線或漢字
\s
匹配任意的空白符
\d
匹配數字
\b
匹配單詞的開始或結束
^
匹配字符串的開始
$
匹配字符串的結束
舉例:
匹配-QQ號必須為5位到12位數字時:^\d{5,12}$
匹配-固定電話的:0\d\d-\d\d\d\d\d\d\d\d
 
2、 常用的限定符
代碼/語法
說明
*
重復零次或更多次
+
重復一次或更多次
?
重復零次或一次
{n}
重復n次
{n,}
重復n次或更多次
{n,m}
重復n到m次
舉例:
匹配-Windows后面跟1個或更多數字:Windows\d+
匹配-一行的第一個單詞:^\w+
 
3、常用的反義代碼
代碼/語法
說明
\W
匹配任意不是字母,數字,下划線,漢字的字符
\S
匹配任意不是空白符的字符
\D
匹配任意非數字的字符
\B
匹配不是單詞開頭或結束的位置
[^x]
匹配除了x以外的任意字符
[^aeiou]
匹配除了aeiou這幾個字母以外的任意字符
舉例:
匹配- 不包含空白符的字符串: \S+
匹配- 用尖括號括起來的以a開頭的字符串: <a[^>]+>


4、分組語法
分類
代碼/語法
說明
捕獲
(exp)
匹配exp,並捕獲文本到自動命名的組里
(?<name>exp)
匹配exp,並捕獲文本到名稱為name的組里,也可以寫成(?'name'exp)
(?:exp)
匹配exp,不捕獲匹配的文本,也不給此分組分配組號
零寬斷言
(?=exp)
匹配exp前面的位置
(?<=exp)
匹配exp后面的位置
(?!exp)
匹配后面跟的不是exp的位置
(?<!exp)
匹配前面不是exp的位置
注釋
(?#comment)
這種類型的分組不對正則表達式的處理產生任何影響,用於提供注釋讓人閱讀
舉例:這點開始難度有點大了
匹配-\w+的組名指定為Word: (?'Word'\w+)),
 
5、懶惰限定符
 
 
代碼/語法
說明
*?
重復任意次,但盡可能少重復
+?
重復1次或更多次,但盡可能少重復
??
重復0次或1次,但盡可能少重復
{n,m}?
重復n到m次,但盡可能少重復
{n,}?
重復n次以上,但盡可能少重復
 
6、其他
 
 
代碼/語法
說明
\a
報警字符(打印它的效果是電腦嘀一聲)
\b
通常是單詞分界位置,但如果在字符類里使用代表退格
\t
制表符,Tab
\r
回車
\v
豎向制表符
\f
換頁符
\n
換行符
\e
Escape
\0nn
ASCII代碼中八進制代碼為nn的字符
\xnn
ASCII代碼中十六進制代碼為nn的字符
\unnnn
Unicode代碼中十六進制代碼為nnnn的字符
\cN
ASCII控制字符。比如\cC代表Ctrl+C
\A
字符串開頭(類似^,但不受處理多行選項的影響)
\Z
字符串結尾或行尾(不受處理多行選項的影響)
\z
字符串結尾(類似$,但不受處理多行選項的影響)
\G
當前搜索的開頭
\p{name}
Unicode中命名為name的字符類,例如\p{IsGreek}
(?>exp)
貪婪子表達式
(?<x>-<y>exp)
平衡組
(?im-nsx:exp)
在子表達式exp中改變處理選項
(?im-nsx)
為表達式后面的部分改變處理選項
(?(exp)yes|no)
把exp當作零寬正向先行斷言,如果在這個位置能匹配,使用yes作為此組的表達式;否則使用no
(?(exp)yes)
同上,只是使用空表達式作為no
(?(name)yes|no)
如果命名為name的組捕獲到了內容,使用yes作為表達式;否則使用no
(?(name)yes)
同上,只是使用空表達式作為no
 
四、在線正則校驗
https://tool.oschina.net/regex/
 

 

 

 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM