零宽断言
正则的含义
- 正则表达式就是用来操作字符串的一种逻辑公式
正则表达式的应用场景
-
数据分析时数据获取的文本筛选
-
进行爬虫时,网页数据的匹配
-
写前端代码的时候,用户输入数据的验证
-
测试人员对请求结果的数据验证
-
批量文本编辑,比如Sublime Text或nodepad++、EditPlus等记事本软件全都支持正则表达式的使用
常用的格式校验
-
邮箱验证
-
IP地址验证
-
电话号码验证
-
身份证号码验证
-
密码强度验证
-
网址验证
-
汉字验证 [\u4e00-\u9fa5]
-
…
-
凡是有一定规律的,批量的数据获取,都可以使用正则表达式来完成
元字符
| 字符 | 说明 |
| — | — |
| . | 代表的是换行符以外的任意字符。 换行符是:(不同的操作系统有不同的换行符) \n \r\n |
| \w | 匹配字母、数字、下划线、汉字的一个字符 |
| \s | 匹配任意的空白符 |
| \d | 匹配数字 |
| ^ | 匹配字符串的开始 |
| $ | 匹配字符串的结束 |
反义代码
反义代码的意思就是与元字符表示相反的代码
-
\W 匹配的任意 不是 字母、数字、下划线、汉字 的字符
-
\S 匹配任意 不是 空白符的字符
-
\D 匹配任意 不是 数字的字符
限定符
符号 | 说明 |
* | 代表的重复0次或者是多次 |
+ | 代表的重复1次或者是多次 |
? | 代表的是重复0次或者是1次 |
{n} | 重复n次,举例:{3}指的就是重复3次 |
{n,} | 重复n次或者更多次数 |
{n,m} | 重复n次到m次,所以这里m一般要比n大 |
分组匹配
findall / search/match 区别¶
-
findall 是查找所有的
-
search 匹配第一个
-
match 匹配开头的
贪婪与非贪婪
-
贪婪的意思是尽可能多的匹配
-
非贪婪的意思就是尽可能少的匹配
-
非贪婪操作符是问号:‘符号?’
-
?号代表的是重复0次或者是1次,再加一个问号,代表的是非贪婪操作,那么最后就只匹配0次
分支条件匹配
- 使用 | 来分隔开不同的正则表达式,代表着 条件1 或 条件2 或条件3 …
零宽断言
-
匹配"正则表达式reg"前边的位置 (?=reg)
-
匹配"正则表达式reg"后边的位置 (?<=reg)
-
匹配后边跟的不是"正则表达式reg"的位置 (?!reg)
-
匹配前边不是"正则表达式reg"的位置 (?<!reg)
常用的实用正则表达式