爬虫笔记(七)——正则表达式常见函数

常见的正则表达式函数有四个,分别是re.match()、re.search()、全局匹配函数、re.sub()。

一、re.match()函数

re.match()函数是从源字符串的起始位置开始匹配一个模式,其使用格式为re.match(pattern,string,flag),其中pattern代表对应的正则表达式,string代表源字符串,flag是可选参数,代表对应的标志位,可以是模式修正符等信息。

import re

string = "wanglong_pythonlove334ipythonhate_python"
pattern1 = ".anglong."
result1 = re.match(pattern1,string)
result2 = re.match(pattern1,string).span()

print (result1)
print (result2)

#<_sre.SRE_Match object; span=(0, 9), match='wanglong_'>
#(0, 9)

通过.span()可以过滤掉一些信息,只留下匹配成功的结果在元字符串中的位置。

二、re.search()函数

与re.match()函数最大的不同就是re.search()函数是在全文进行检索并匹配,而re.match()是在源字符串的起始位置开始匹配,下面代码可以看出它们的不同。

import re

string = "wanglong_pythonlove334ipythonhate_python"
pattern1 = ".python."
result1 = re.search(pattern1,string)
result2 =re.match(pattern1,string)
print (result1)
print (result2)

#<_sre.SRE_Match object; span=(8, 16), match='_pythonl'>
#None

三、全局匹配函数

通过观察我们可以发现,在上述匹配中,即使有多个字符满足模式要求,但却都只能匹配一个出来,要想全部匹配出来,就要先使用re.compile()对正则表达式进行预编译,然后使用findall()根据正则表达式从源字符串中匹配所有的结果。

import re

string = "wanglong_pythonlove334ipythonhate_pythonlong"
pattern1 = re.compile(".python.")
result1 = pattern1.findall(string)
print (result1)

#['_pythonl', 'ipythonh', '_pythonl']

四、re.sub()函数

这个函数可以实现根据正则表达式替换某些字符串的功能,使用格式为re.sub(pattern,rep,string,max),rep是指要代替的字符串,max是最大替换次数。

import re

string = "wanglong_pythonlove334ipythonhate_pythonlong"
pattern1 = ".python."
result1 = re.sub(pattern1,"c++",string)
result2 = re.sub(pattern1,"c++",string,2)

print (result1)
print (result2)

#wanglongc++ove334c++atec++ong
#wanglongc++ove334c++ate_pythonlong

猜你喜欢

转载自blog.csdn.net/wzyaiwl/article/details/81087284