1、正则表达式
分普通字符和特殊字符
#匹配str1="['https://img-blog.csdnimg.cn/af82c09f338d46f3bea2855f1ef14a79.webp']"
#至str2="https://img-blog.csdnimg.cn/af82c09f338d46f3bea2855f1ef14a79.webp"
url=re.compile(r'\[\'(.*?)\'\]').findall(url)
特殊字符——元字符
. 表示匹配除了 换行符 之外的任何 单个 字符
re.DOTALL 点也匹配换行符
* 表示匹配前面的子表达式任意次,包括0次
.* 表示任意字符 包括0字符
+ 表示前面的子表达式一次或多次,不包括0次
.+ 表示任意字符 不包括0字符
{} 表示匹配固定次数
a{3,4} 匹配a至少三次,至多四次
\d{11}可以把所有11位电话号提取出来
a{0,1} 还可以表示a出现了0次或1次
? 也表示0次或1次 a?
也表示贪婪模式 转 非贪婪模式:加问号 re.compile(r'<.*?>')
对元字符的转义 用反斜杠\
.*\. 找出原文.之前加上.的内容
匹配某种字符类型
\d 匹配0-9之间任意一个数字字符 等价于表达式[0-9]
\D 非0-9 [^0-9]
\s 任意一个空白字符 空格、tab、换行
\S ^\s
\w 任意文字字符 大小写字母、数字、下划线 [a-z A-Z 0-9]
常用于检测用户名是否有效
\W ^\w
[] 方括号 表示 范围
1[1-10]\d{10} 第二个字符在1-10范围内的有效电话号码
[\s,.] 表示匹配任意空白字符 或者 , 或者 .
[.] 方括号里的字符表示字符本身,比如 . 不再表示任意字符
[^ ] 加^ 表示非[]里的集合
-起始位置 和 单行、多行模式
p = re.compile(r'^\d+', re.M)
re.M 多行模式
re.S 单行模式
re.DOTALL 点也匹配换行符
^表示匹配文本的起始位置
单行模式 '^/d+' 表示第一行起始的数字
多行模式 加上 re.M
$ 表示结尾位置 跟^类似 /d+$
字符串替换
newStr = re.sub(r'/av\d+/', '/cn345677/' , names)
-括号 分组
(.+), 只提取括号里的部分
(.+)(,) 返回两组
2、re库
#1、re.compile()将正则表达式编译成一个pattern对象
#return pattern
pattern=re.compile(r'.色')
#2、pattern提供一系列的方法,来对文本进行匹配,一般返回一个match对象
#return match
pattern.match(names)
pattern.search(names)
#也有返回list的
#return list
pattern.findall(names)