从本篇开始,会陆续介绍一些爬虫类的学习心得,我也是刚入门自学,欢迎各位一起交流,本人水平有限,难免出现错误,欢迎指正。
正则表达式是一种用来匹配字符串的强有力的功能。Python中的re模块使其拥有了正则表达式的功能。
1、re.match()
功能说明:从字符串的起始位置开始匹配,如果匹配失败就返回None,必须是起始开始匹配,即使是中间能匹配成功,也返回None。
match(pattern, string, flags=)
参数说明:
patter: 匹配的正则表达式
string: 要匹配的字符串
flags: 标志位,用于控制正则表达式的匹配方式,常用的值有以下几种
示例:
importre
str ="WWWWWWtest.test"
print(re.match("www",str))#大小写不符合
print(re.match("WWW",str))#开头匹配成功,只返回第一个匹配结果
print(re.match("test",str))#不符合开头匹配
print(re.match("www",str,flags=re.I))#忽略大小写,匹配成功
输出:
>>>
>>>
2、re.search()
功能说明:在整个字符串里进行匹配,如果匹配失败就返回None。只返回第一个匹配结果。
search(pattern, string, flags=)
参数说明:
patter: 匹配的正则表达式
string: 要匹配的字符串
flags: 标志位,用于控制正则表达式的匹配方式,同re.match
示例:
importre
str ="WWWWWWtest.test"
print(re.search("www",str))#大小写不符合
print(re.search("WWW",str))#开头匹配成功,只返回第一个匹配结果
print(re.search("test",str))#中间匹配成功,只返回第一个匹配结果
print(re.search("www",str,flags=re.I))#忽略大小写,匹配成功
输出:
>>>
>>>
>>>
3、re.findall()
功能说明:在整个字符串里进行匹配,如果匹配失败就返回一个空列表,如果匹配成功就返回一个所有匹配结果的列表。
findall(pattern, string, flags=)
参数说明:
patter: 匹配的正则表达式
string: 要匹配的字符串
flags: 标志位,用于控制正则表达式的匹配方式,同re.match
示例:
importre
str ="WWWWWWtest.test"
print(re.findall("www",str))#大小写不符合,返回空列表
print(re.findall("WWW",str))#匹配成功
print(re.findall("test",str))#匹配成功
print(re.findall("www",str,flags=re.I))#忽略大小写,匹配成功
输出:
>>>['WWW', 'WWW']
>>>['test', 'test']
>>>['WWW', 'WWW']
4、re.sub()、re.subn()
功能说明:在整个字符串里进行正则表达式匹配,将匹配成功的字符串进行替换,可以指定替换的次数,如果不指定,则替换所有的匹配字符串。
两者区别:sub返回被替换后的字符串,subn返回一个元组,元组的第一个元素是被替换的字符串,第二个元素是被替换的次数。
sub(pattern, repl, string, count=, flags=)
subn(pattern, repl, string, count=, flags=)
参数说明:
patter: 匹配的正则表达式
repl: 用来替换的字符串
string: 要被查找替换的原始字符串
count: 最大替换次数
flags: 标志位,用于控制正则表达式的匹配方式,同re.match
示例:
importre
str ="WWW test test www"
#Test 替换 test,替换1次
print(re.sub(r"(test)","Test", str,count=1))
#Test 替换 test,全部替换
print(re.sub(r"(test)","Test", str))
#Test 替换 test,替换1次
print(re.subn(r"(test)","Test", str,count=1))
#Test 替换 test,全部替换
print(re.subn(r"(test)","Test", str))
#替换失败,返回原字符串
print(re.sub(r"(Test)","TEST", str))
#替换失败,返回原字符串,0次
print(re.subn(r"(Test)","TEST", str))
#忽略大小写,TEST 替换 Test,全部替换
print(re.sub(r"(Test)","TEST", str,flags=re.I))
#忽略大小写,TEST 替换 Test,全部替换
print(re.subn(r"(Test)","TEST", str,flags=re.I))
输出:
>>>WWW Test test www
>>>WWW Test Test www
>>>('WWW Test test www', 1)
>>>('WWW Test Test www', 2)
>>>WWW test test www
>>>('WWW test test www', 0)
>>>WWW TEST TEST www
>>>('WWW TEST TEST www', 2)
5、re.spilt()
功能说明:按照能够匹配的子串,将字符串进行分割后返回列表。
split(self, *args, **kwargs)
示例:
importre
str ="WWW test test www"
#字符串的切割功能,按空格进行分割
print(str.split(" "))
#re.split切割功能,按空格进行分割,+表示至少匹配一个空格
print(re.split(r" +", str))
输出:
>>>['WWW', '', '', 'test', 'test', 'www']
>>>['WWW', 'test', 'test', 'www']
re模块还有一些其他的函数功能,就不一一介绍了,如果需要了解更多,可以参考官方文档。
领取专属 10元无门槛券
私享最新 技术干货