正则表达式30分钟入门40分钟进阶


文章目录

  • 一、正则表达式入门
    • 1.1字符组
      • 1.1.1字符组中横杠(-)表示区间
      • 1.1.2特殊字符需转义
      • 1.1.3取反
      • 总结
    • 1.2快捷方式
      • 1.2.1 \d匹配数字 \w匹配字符(特殊字符除外)
      • 1.2.2 \s匹配空格
      • 1.2.3匹配单词边界
      • 1.2.4快捷方式取反
      • 1.2.4开始和结束
      • 1.2.5任意字符
      • 1.2.6 可选字符
      • 总结
    • 1.3匹配多个数据
      • 1.3.1 重复次数
      • 1.3.2 重复区间
      • 1.3.3 开闭区间
      • 1.3.4 匹配所有手机号码
      • 1.3.4 匹配所有网址
  • 二、正则表达式进阶
    • 2.1分组与溯回引用
      • 2.1.1分组
      • 2.1.2 或者条件
      • 2.1.3 非捕获分组
      • 2.1.4 回溯引用
    • 2.2先行断言
      • 2.2.1 正向先行断言
      • 2.2.1 反向先行断言
    • 2.3后行断言
      • 正向后行断言
      • 反向后行断言

正则练习网址: https://www.codejiaonang.com/
正则在线测试网站: https://regexr-cn.com/
一、正则表达式入门 1.1字符组 正则表达式中字符组使用中括号([])包裹,作用是匹配中括号里面的元素任意一次。如下:
正则表达式30分钟入门40分钟进阶
文章图片

1.1.1字符组中横杠(-)表示区间
字符组中可以使用横杠来表示区间,省去大量写操作。
如图:
正则表达式30分钟入门40分钟进阶
文章图片

1.1.2特殊字符需转义
如果需要再字符组内对横杠(包括其他特殊字符)进行匹配,需要再“-”前面加上转义字符:
正则表达式30分钟入门40分钟进阶
文章图片

1.1.3取反
如果不想取某一类字符可使用“^”对其取反,如下图:
正则表达式30分钟入门40分钟进阶
文章图片

总结
正则表达式30分钟入门40分钟进阶
文章图片

1.2快捷方式 1.2.1 \d匹配数字 \w匹配字符(特殊字符除外)
\d表示匹配所有数字,\w表示匹配所有字符,如下图:
正则表达式30分钟入门40分钟进阶
文章图片

正则表达式30分钟入门40分钟进阶
文章图片

1.2.2 \s匹配空格
可以使用\s来匹配空格和缩进:
正则表达式30分钟入门40分钟进阶
文章图片

1.2.3匹配单词边界
匹配内容中完整的单词:
正则表达式30分钟入门40分钟进阶
文章图片

1.2.4快捷方式取反
\W\w的取反,\D\d的取反,\S\s的取反。如:
正则表达式30分钟入门40分钟进阶
文章图片

1.2.4开始和结束
目标前使用^可以匹配开始位置字符,在目标后使用$可以匹配结束位置的字符:
正则表达式30分钟入门40分钟进阶
文章图片

1.2.5任意字符
使用点(.)可以匹配任意字符(除换行符即\n):
正则表达式30分钟入门40分钟进阶
文章图片

1.2.6 可选字符
匹配一个可以出现也可以不出现的字符:
正则表达式30分钟入门40分钟进阶
文章图片

正则表达式30分钟入门40分钟进阶
文章图片

总结
正则表达式30分钟入门40分钟进阶
文章图片

1.3匹配多个数据 1.3.1 重复次数
在所需要匹配的字符后面加上大括号,里面填充数字,这个数字表示重复的次数:
正则表达式30分钟入门40分钟进阶
文章图片

1.3.2 重复区间
使用大括号内的数字区间可匹配响应范围个数的字符:
正则表达式30分钟入门40分钟进阶
文章图片

如果在后面加上了?,就会只匹配区间开始数量的字符,在这里?表示非贪婪模式:
正则表达式30分钟入门40分钟进阶
文章图片

如果大括号使用前闭后开的形式,表示匹配第一元素开始以上的内容:
正则表达式30分钟入门40分钟进阶
文章图片

1.3.3 开闭区间
+相当于{1,}*相当于{0,}
正则表达式30分钟入门40分钟进阶
文章图片

正则表达式30分钟入门40分钟进阶
文章图片

1.3.4 匹配所有手机号码
正则表达式30分钟入门40分钟进阶
文章图片

1.3.4 匹配所有网址
正则表达式30分钟入门40分钟进阶
文章图片

二、正则表达式进阶 2.1分组与溯回引用 2.1.1分组
在正则表达式中还提供了一种将表达式分组的机制,当使用分组时,除了获得整个匹配。还能够在匹配中选择每一个分组。
要实现分组使用()即可。如下:
正则表达式30分钟入门40分钟进阶
文章图片

正则表达式30分钟入门40分钟进阶
文章图片

2.1.2 或者条件
使用分组的同时还可以使用 或者(or)条件:
正则表达式30分钟入门40分钟进阶
文章图片

2.1.3 非捕获分组
有时候,我们并不需要捕获某个分组的内容,但是又想使用分组的特性。
这个时候就可以使用非捕获组(?:表达式),从而不捕获数据,还能使用分组的功能。
正则表达式30分钟入门40分钟进阶
文章图片

2.1.4 回溯引用
那如果想让后面分组的正则和第一个分组的正则匹配同样的数据
可以使用分组的回溯引用,使用\N可以引用编号为N的分组,如下:
正则表达式30分钟入门40分钟进阶
文章图片

正则表达式30分钟入门40分钟进阶
文章图片

2.2先行断言 2.2.1 正向先行断言
正向先行断言:(?=表达式),指在某个位置向右看,表示所在位置右侧必须能匹配表达式,但只提取该位置的数据:
正则表达式30分钟入门40分钟进阶
文章图片

2.2.1 反向先行断言
反向先行断言(?!表达式)的作用是保证右边不能出现某字符
正则表达式30分钟入门40分钟进阶
文章图片

2.3后行断言 正向后行断言
正向后行断言:(?<=表达式),指在某个位置向左看,表示所在位置左侧必须能匹配表达式
反向后行断言
【正则表达式30分钟入门40分钟进阶】反向后行断言:(?,指在某个位置向左看,表示所在位置左侧不能匹配表达式

    推荐阅读