分组

分组其实就是讲较长的匹配表达式用括号括起来,然后将这一部分视为一个整体进行操作.

对单个字符的重复匹配需要在字符后面加上限定符,如果是多个字符的重复匹配,则可以把多个字符作为一个分组在分组后面加上限定符即可

常用分组语法:


1234.png

捕获:对匹配到的数据进行暂存
零宽断言:该表达式只匹配一个位置标记,所匹配的结果并不会显示出来,因此所匹配到的字符串宽度为0
注释:便于阅读

ps

1分组0对应整个正则表达式
2 组号分配过程会从左到右扫描两遍,第一遍给未命名分组进行分配,第二遍给命名分组分配,因此所有命名的组号都大于未命名的组号
3 可以使用(?:exp)的方法来剥夺一个分组对组号的分配权

例子
将(ing)整体作为一个分组进行匹配,限定匹配一次

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+)中匹配到的内容

long long ago
\b(\w+)\b\s+\1\b
共找到 1 处匹配:
long long

由于使用了(?:exp)语法,(?:\w+)没有对应的分组编号,\1 不会获取到分组内容,无法进行匹配

long long ago
\b(?:\w+)\b\s+\1\b
(没有匹配)

零宽断言(?=ing\b)匹配到的内容不作为匹配结果进行显示

lily is singing while joe is dancing
\b\w+(?=ing\b)
共找到 2 处匹配:
sing
danc

零宽断言}([email protected])匹配到的内容不作为匹配结果进行显示

[email protected] [email protected]
\d{7,11}([email protected])|\w+([email protected])
共找到 2 处匹配:
1540699763
lalalalal2012

你可能感兴趣的:(分组)