分组

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

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

常用分组语法:


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

零宽断言}(?=@qq.com)匹配到的内容不作为匹配结果进行显示

1540699763@qq.com lalalalal2012@163.com
\d{7,11}(?=@qq.com)|\w+(?=@163.com)
共找到 2 处匹配:
1540699763
lalalalal2012
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 6,459评论 0 9
  • http://www.jb51.net/tools/zhengze.html 正则表达式30分钟入门教程 版本:v...
    nullleaf阅读 3,715评论 0 2
  • 注:本篇文章只为方便查看,特此保留,如有冒犯,敬请谅解!!! 本文目标 30分钟内让你明白正则表达式是什么,并对它...
    阿杰Alex阅读 5,333评论 0 10
  • 转自: JS正则表达式一条龙讲解,从原理和语法到JS正则、ES6正则扩展,最后再到正则实践思路 温馨提示:文章很长...
    前端渣渣阅读 5,789评论 1 32
  • 早在去年 3D 扫描公司 Matterport 就因获得一笔融资而得以迅速发展,现在它俨然已经成为了美国沉浸式媒体...
    晓晓13号阅读 2,915评论 0 0