正则表达式
- 正则表达式是一门单独的技术,在实际操作过程中由于它优雅的字符匹配特性,各种编程语言都陆续支持正则表达式的操作方式,Python中通过内建模块re进行正则表达式的处理,大致按照如下三个步骤进行数据的操作
- 确定源数据:获取整体数据
- 按照目标数据定义正则表达式匹配规则
- 从整体数据中匹配符合要求的数据
- 正则表达式的处理,最核心的是先掌握正则表达式的语法和匹配规则,根据实际操作的不同需要,正则表达式定义了不同的数据匹配方式
表达式 |
描述 |
^ |
匹配开头 |
$ |
匹配结束 |
. |
匹配任意..字符 |
x? |
匹配字符x出现0次或者1次 |
x+ |
匹配字符x出现1次或者多次 |
x* |
匹配字符x出现0次或者多次 |
(xy)+ |
分组的方式,匹配字符串xy出现1次或者多次 |
[xy]+ |
匹配字符x或者y出现了1次或者多次 |
[0-9]+ |
匹配一个数字出现了1次或者多次 |
[a-z]+ |
匹配一个小写字母出现了1次或者多次 |
[A-Z]+ |
匹配一个大写字母出现了1次或者多次 |
[a-zA-Z]+ |
匹配一个字母[大小写均可]出现了1次或者多次 |
x{m,} |
匹配字符x出现了m次以上 |
x{m,n} |
匹配字符x出现了m次以上n次以下 |
$ |
匹配字符出现了n次以下 |
... |
... |
\d |
匹配一个数字,和[0-9]相同 |
\D |
匹配一个非数字,和[^0-9]相同 |
\w |
匹配一个字母数字或者下划线,和[a-zA-Z0-9_]相同 |
\s |
匹配一个空白字符 |
\b |
匹配一个字符的边缘位置 hello worhellold : \bhello\b |
... |
... |
* |
贪婪匹配符,和其他表达式一起使用 |
? |
懒惰匹配符,和其他表达式一起使用 |
python中操作正则表达式
- python通过内建的re模块,对于正则表达式的操作提供了友好的支持
- PS:正则表达式是一个单独的技术,python支持它的操作
- python在实际操作过程中,re模块提供了两种操作方式
- 核心操作方式
- 正则匹配对象pattern,通过re模块的compile()函数对于正则表达式字符串进行编译得到
- 通过pattern匹配对象对目标字符串进行匹配检索操作
- 快捷操作方式
- 直接通过re模块的各种正则函数进行字符串的匹配检索操作
# 核心操作方式
0.正则表达式字符串
1.通过表达式字符串->得到匹配对象
2.通过匹配对象->目标字符串进行检索
# 快捷操作方式
0.正则表达式字符串
1.通过re模块->目标字符串进行检索
正则表达式核心操作方法
- match():用于根据表达式进行字符匹配的操作函数~只匹配一次[从指定的起始位置进行匹配]
- search():用于根据表达式进行字符匹配的操作函数~只匹配一次[从完整的目标字符串中进行检索匹配]
- findall():用于根据表达式进行字符匹配~匹配多次,返回匹配到的列表
- finditer():用于根据表达式进行字符撇皮~匹配多次,返回匹配到的迭代器
- split():根据指定的表达式对目标字符串进行切割,返回切割后的列表
- sub():用于字符替换
# 匹配对象的函数
match(string[, pos[, endpos]])
search(string[, pos[, endpos]])
findall(string[, pos[, endpos]])
finditer(string[, pos[, endpos]])
# re模块的函数
match(pattern, string, flags=0)
search(pattern, string, flags=0)
findall(pattern, string, flags=0)
finditer(pattern, string, flags=0)
# 公共函数[匹配对象|re模块操作方式一样]
split():拆分字符串的函数
sub():根据正则替换字符串的函数
常用的正则表达式
- 匹配中文字符的正则表达式
- [\u4e00-\u9fa5]
- 匹配中文还真是个头疼的事,有了这个表达式就好办了
- 匹配首尾空白字符的正则表达式
- ^\s|\s$
- 可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
- 匹配Email地址的正则表达式
- \w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*
- 表单验证时很实用
- 匹配网址URL的正则表达式
- 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)
- ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
- 表单验证时很实用
- 匹配腾讯QQ号
- [1-9][0-9]{4,}
- 腾讯QQ号从10000开始
- 匹配中国邮政编码
- [1-9]\d{5}(?!\d)
- 中国邮政编码为6位数字
- 匹配身份证
- \d{15}|\d{18}
- 中国的身份证为15位或18位
- 匹配ip地址
- \d+.\d+.\d+.\d+
- 提取ip地址时有用
网友评论