正则表达式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.1字符组中横杠(-)表示区间

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

1.1.2特殊字符需转义

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

1.1.3取反

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

总结

正则表达式30分钟入门40分钟进阶_第5张图片

1.2快捷方式

1.2.1 \d匹配数字 \w匹配字符(特殊字符除外)

\d表示匹配所有数字,\w表示匹配所有字符,如下图:
正则表达式30分钟入门40分钟进阶_第6张图片
正则表达式30分钟入门40分钟进阶_第7张图片

1.2.2 \s匹配空格

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

1.2.3匹配单词边界

匹配内容中完整的单词:
正则表达式30分钟入门40分钟进阶_第9张图片

1.2.4快捷方式取反

\W\w的取反,\D\d的取反,\S\s的取反。如:
正则表达式30分钟入门40分钟进阶_第10张图片

1.2.4开始和结束

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

1.2.5任意字符

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

1.2.6 可选字符

匹配一个可以出现也可以不出现的字符:
正则表达式30分钟入门40分钟进阶_第13张图片
正则表达式30分钟入门40分钟进阶_第14张图片

总结

正则表达式30分钟入门40分钟进阶_第15张图片

1.3匹配多个数据

1.3.1 重复次数

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

1.3.2 重复区间

使用大括号内的数字区间可匹配响应范围个数的字符:
正则表达式30分钟入门40分钟进阶_第17张图片
如果在后面加上了?,就会只匹配区间开始数量的字符,在这里?表示非贪婪模式:
正则表达式30分钟入门40分钟进阶_第18张图片
如果大括号使用前闭后开的形式,表示匹配第一元素开始以上的内容:
正则表达式30分钟入门40分钟进阶_第19张图片

1.3.3 开闭区间

+相当于{1,}*相当于{0,}
正则表达式30分钟入门40分钟进阶_第20张图片
正则表达式30分钟入门40分钟进阶_第21张图片

1.3.4 匹配所有手机号码

正则表达式30分钟入门40分钟进阶_第22张图片

1.3.4 匹配所有网址

正则表达式30分钟入门40分钟进阶_第23张图片

二、正则表达式进阶

2.1分组与溯回引用

2.1.1分组

在正则表达式中还提供了一种将表达式分组的机制,当使用分组时,除了获得整个匹配。还能够在匹配中选择每一个分组。
要实现分组使用()即可。如下:
正则表达式30分钟入门40分钟进阶_第24张图片
正则表达式30分钟入门40分钟进阶_第25张图片

2.1.2 或者条件

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

2.1.3 非捕获分组

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

2.1.4 回溯引用

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

2.2先行断言

2.2.1 正向先行断言

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

2.2.1 反向先行断言

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

2.3后行断言

正向后行断言

正向后行断言:(?<=表达式),指在某个位置向左看,表示所在位置左侧必须能匹配表达式

反向后行断言

反向后行断言:(?,指在某个位置向左看,表示所在位置左侧不能匹配表达式

你可能感兴趣的:(安全编程)