1.正则表达式基础
总体简介
1.正则表达式是用于处理字符串的强大工具,能帮助开发人员检查一个字符串是否与某种模式匹配。
正则表达式的常用符号
1.一般字符
正则表达式的一般字符有3个,如表所示
注:1.一般字符是匹配单个字符;2.注意字符集的用法,是从中选一个字符;
2.预定义字符
注意:大写字母表示意思“非”;
3.数量词及边界匹配
注意:
1.在数量词中,匹配时,字母的种类要有,只是数量词前的一个字母出现的次数大于等于0;
2.在爬虫中常使用(.?),其中"()“表示括号的内容作为返回的结果,”.?“表示匹配任意的字符,例如:
3.数量词的贪婪与非贪婪模式
正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*“如果用于查找"abbbc”,将找到"abbb”。而如果使用非贪婪的数量词"ab*?",将找到"a"。
4.逻辑、分组和特殊构造
补充
1.关于区分反斜杠问题
正则表达式里使用"“作为转义字符,这就可能造成反斜杠困扰。
假如你需要匹配文本中的字符”",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\":因为前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用**r"\"**表示。同样,匹配一个数字的"\d"可以写成r"\d"。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。
2.正则表达式提供了一些可用的匹配模式,比如忽略大小写、多行匹配等;
2.python中re模块
1.使用方法
Python通过re模块提供对正则表达式的支持。使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果(一个Match实例),最后使用Match实例获得信息,进行其他的操作。例如:
2.相关函数
1.search()函数
re模块的search()函数匹配并提取第一个符合规律的内容,返回一个正则表达式对象。语法如下:
re.search(pattern,string,flags=0)
其中:(1)pattern为匹配的正则表达式;(2)string为要匹配的字符串;(3)flags为标志位,用于控制正则表达式的匹配形式,如是否区分大小写,多行匹配等。
在这里插入代码片
import re
a = 'one1two2three3'
ans = re.search('\d+', a)
print(ans)
结果:
可以通过group()方法获取信息
添加print(ans.group())获得信息
2.sub()函数
用于替换字符串中的匹配项,格式如下:
re.sub(pattern,repl,string,count=0,flag=0),其中:(1).pattern为匹配的正则表达式;(2).repl为替换的字符串;(3).string为要被查找替换的原始字符串;(4).counts为模式匹配后替换的最大次数,默认0表示替换所有匹配;(5).flag为标志位,用于控制正则表达式的匹配方式;
import re
a = '123-34-23'
ans = re.sub('\D', '', a)
print(ans)
结果:
3.findall()函数
搜索string,以列表形式返回全部能匹配的子串。
格式如下:re.findall(pattern, string, flags);
import re
a = 'one1two2three3'
ans=re.findall('\d+',a)
print(ans)
结果:
4.split()函数
来源:CSDN
作者:eithre up or down
链接:https://blog.csdn.net/qq_43786066/article/details/104093566