分組其實(shí)就是講較長的匹配表達(dá)式用括號括起來,然后將這一部分視為一個整體進(jìn)行操作.
對單個字符的重復(fù)匹配需要在字符后面加上限定符,如果是多個字符的重復(fù)匹配,則可以把多個字符作為一個分組在分組后面加上限定符即可
常用分組語法:

1234.png
捕獲:對匹配到的數(shù)據(jù)進(jìn)行暫存
零寬斷言:該表達(dá)式只匹配一個位置標(biāo)記,所匹配的結(jié)果并不會顯示出來,因此所匹配到的字符串寬度為0
注釋:便于閱讀
ps
1分組0對應(yīng)整個正則表達(dá)式
2 組號分配過程會從左到右掃描兩遍,第一遍給未命名分組進(jìn)行分配,第二遍給命名分組分配,因此所有命名的組號都大于未命名的組號
3 可以使用(?:exp)的方法來剝奪一個分組對組號的分配權(quán)
例子
將(ing)整體作為一個分組進(jìn)行匹配,限定匹配一次
lily is singing while joe is danceing
\b[a-z]+(ing){1}\b
共找到 2 處匹配:
singing
danceing
將^(\d{2}.){3}作為一個分組,匹配三次
10.10.88.18
^(\d{2}\.){3}\d{2}$
共找到 1 處匹配:
10.10.88.18
\1 可以引用(\w+)中匹配到的內(nèi)容
long long ago
\b(\w+)\b\s+\1\b
共找到 1 處匹配:
long long
由于使用了(?:exp)語法,(?:\w+)沒有對應(yīng)的分組編號,\1 不會獲取到分組內(nèi)容,無法進(jìn)行匹配
long long ago
\b(?:\w+)\b\s+\1\b
(沒有匹配)
零寬斷言(?=ing\b)匹配到的內(nèi)容不作為匹配結(jié)果進(jìn)行顯示
lily is singing while joe is dancing
\b\w+(?=ing\b)
共找到 2 處匹配:
sing
danc
零寬斷言}(?=@qq.com)匹配到的內(nèi)容不作為匹配結(jié)果進(jìn)行顯示
1540699763@qq.com lalalalal2012@163.com
\d{7,11}(?=@qq.com)|\w+(?=@163.com)
共找到 2 處匹配:
1540699763
lalalalal2012