re模块-正则

一. 导入(python 内置模块)

在线测试网站: http://tool.chinaz.com/regex/

import re

二. 正则表达式之字符组

[0123456789]                匹配0到9之间的任意一个数字
[0-9]                       匹配0到9之间的任意一个数字(简写)
[a-z]                       匹配a到z之间的任意一个小写字母
[A-Z]                       匹配A到Z之间的任意一个大写字母
[0-9a-zA-Z]                 匹配任意一个数字或者大小写字母(没有顺序)

三. 正则表达式之特殊符号

.                           匹配除换行符以外的任意字符
\w                          匹配数字、字母、下划线(后续筛选变量名可能用到)
\d                          匹配任意的数字
\t                          匹配一个制表符(tab键)
^                           匹配字符串的开始
$                           匹配字符串的结尾
\W                          匹配非字母或数字或下划线
\D                          匹配非数字
a|b                         匹配a或者b 管道符就是or(或)的意思
()                          给正则表达式分组 不影响正则匹配(后续再讲)
[]                          字符组的概念(里面所有的数据都是或的关系)
[^]                         上箭号出现在了中括号的里面意思是取反操作

四. 正则表达式之量词

*                           重复零次或者多次(默认就是多次:越多越好)
+                           重复一次或者多次(默认就是多次:越多越好)
?                           重复零次或者一次(默认就是一次:越多越好)
{n}                         重复n次
{n,}                        重复最少n次最多多次(越多越好)
{n,m}                       重复n到m次(越多越好)

re模块方法

import re

res = re.findall('a', 'jason oscar aaa')         # findall(正则表达式,待匹配的文本)
print(res)  # ['a', 'a', 'a', 'a', 'a']          # 结果是所有符合条件的数据 并且组织成了列表

res1 = re.search('a', 'jason oscar aaa')         # search(正则表达式,待匹配的文本)
print(res1)                                      # 查找到一个符合条件的数据就结束  没有则返回None
print(res1.group())                              # a  没有则无法调用group() 直接报错

res2 = re.match('j', 'jason oscar aaa')          # match(正则表达式,待匹配的文本)
print(res2)                                      # None  从字符串的开头匹配 如果没有则直接返回None 类似于给正则自动加了^ 如果符合也只获取一个就结束
print(res2.group())                              # j  没有则无法调用group() 直接报错

res3 = re.finditer('a', 'jason oscar aaa')       # finditer(正则表达式,待匹配的文本)
print(res3)                                      # 结果是一个迭代器对象 为了节省空间
print([obj.group() for obj in res3])             # ['a', 'a', 'a', 'a', 'a']

obj = re.compile('\d+')                          # 提前写好后续需要经常使用的正则
print(re.findall(obj,'asjd21hj13123j'))          # 写一遍之后 直接反复调用即可
print(re.findall(obj,'234328748hgjghj'))         # 写一遍之后 直接反复调用即可
print(re.findall(obj,'jhjhjh423432423'))         # 写一遍之后 直接反复调用即可
posted @ 2023-05-06 07:35  codegjj  阅读(0)  评论(0编辑  收藏  举报