通用正則表達式學習的總結(jié)
正則表達式學習總結(jié)在網(wǎng)上已經(jīng)不少了,不過這種筆記多多益善,多看看總是能增進些記憶。下面這個正則表達式學習筆記,希望對大家有所幫助。
\d = [0-9] 表示0-9的任意一個數(shù)字
\D = [^0-9] 表示除數(shù)字之外的任意字符
\w = [0-9a-zA-Z] 表示數(shù)字或字母
\W = [^0-9a-zA-Z] 表示除數(shù)字或字母外的任意字符
\s 匹配空白字符(回車、換行、制表、空格)
\S 非空白字符
.能匹配所有字符,除換行符\n(但在如下的模式匹配中將可以匹配\n)
\.和[.]匹配點號本身
* 0-無窮
+ 1-無窮
? 0-1次
之前的字符可用括號來表示字符數(shù)組的多次,如:(ac)+表示出現(xiàn)一個及以上的ac字符串
{min,max} min-max次 \d{1,3} 匹配1-3個數(shù)字
{min,} min-無窮次 \d{1,} 匹配一個及以上的數(shù)字
{number} 只能是number次 \d{3} 匹配3個數(shù)字
多選:
(...|...)在豎線兩端添加各個字符串表示多選 (ac|ab) 匹配ac或ab
捕獲分組:
1、只要使用了括號就存在捕獲分組
2、編號按從左至右
3、獲取到的值是匹配的最后一個字符串
(?:..)不捕獲文本,不是所有語言都支持,不推薦使用
反向引用:
\1 引用括號內(nèi)出現(xiàn)的內(nèi)容,數(shù)字為括號編號 (ac)\1 匹配acac
錨點:
\b 單詞分解符錨點、一側(cè)是單詞字符,另一側(cè)是非單子字符
單詞字符通常是指英文字符、數(shù)字字符,對中文不適用
非單詞字符通常是指各種標點復和空白字符
^匹配一行的的開頭(有可能變化)
$匹配一行的末尾(有可能變化)
\A匹配整個字符串的開頭
\Z匹配整個字符串的末尾
環(huán)視:
(?=...) 肯定順序環(huán)視 右側(cè)文本能由此表達式匹配
(?!...) 否定順序環(huán)視 右側(cè)文本不能由此表達式匹配
(?<=...) 肯定逆序環(huán)視 左側(cè)文本能由此表達式匹配
注意:
1、環(huán)視結(jié)構(gòu)僅用于布爾判斷,結(jié)構(gòu)內(nèi)的子表達式所匹配的文本,不會保存在整個表達式的匹配結(jié)果之中
2、逆序環(huán)視結(jié)構(gòu)對子表達式存在限制:
Perl、Python:子表達式必須為固定長度
PHP、Java:子表達式
可以不定長度,但必須有上限
.NET:沒有任何限制
匹配模式:
I:不區(qū)分大小寫 Pattern.CASE_INSENSITIVE
S:.可以匹配任何字符 Pattern.DOTALL
M:^$可以匹配字符串中任意起始位置和結(jié)束位置 Pattern.MULTILINE
X:可以添加注釋(注釋以#開頭以換行符結(jié)束或到表示末尾,此模式會忽略表達式中的所有空白字符) Pattern.COMMENTS
使用多個模式時用|來分隔
作用范圍:ismx為模式名,如(?i)AB(?-i)C (?is)
(?ismx)啟用模式
(?-ismx)停用模式
模式范圍優(yōu)先級高于外部指定的模式
正則表達式學習先總結(jié)到這里。本文來自JavaEye博客:《正則表達式學習筆記》
【編輯推薦】