若是想要从源字符串的起始位置匹配一个模式,咱们能够使用re.match()函数。re.match()函数的使用格式是:
re.match(pattern, string, flag)php
咱们还能够使用re.search()函数进行匹配,使用该函数进行匹配,会扫描整个字符串并进行对应的匹配。
该函数与re.match()函数最大的不一样是,re.match()函数从源字符串的开头进行匹配,而re.search()函数会在全文中进行检索匹配。
示例以下:python
import re pattern1 = "python" string = "abcdpythonfphp345pythonxadi_py" result1 = re.search(pattern1, string) print(result1) print(result1.group())
执行结果:正则表达式
<_sre.SRE_Match object; span=(4, 10), match='python'> python
在以上两个函数中,即使源字符串中有多个结果符合模式,也只会匹配一个结果,那么咱们如何将符合模式的内容所有都匹配出来呢?ide
咱们能够经过下面的实例更好理解:函数
import re string = "hellomypythonhispythonourpythonend" pattern = re.compile(".python.")#预编译 result = pattern.findall(string)#找出符合模式的全部结果 print(result)
执行结果:spa
['ypythonh', 'spythono', 'rpythone']
能够看到,这段代码会将string中知足pattern模式的结果所有输出,符合条件的结果一共有3个。code
若是,想根据正则表达式来实现替换某些字符串的功能,咱们能够使用re.sub()函数来实现。
使用re.sub这个函数,会根据正式表达式pattern,从源字符串string查找出符合模式的结果,并替换为字符串rep,最多可替换max次。
re.sub()函数的格式以下:
re.sub(pattern,rep,string,max)
其中,第一个参数为对应的正则表达式,第二个参数为要替换成的字符串,第三个参数为源字符串,第四个参数为可选项,表明最多替换的次数,若是忽略不写,则会将符合模式的结果所有替换。字符串
import re string = "hellomypythonhispythonourpythonend" pattern = "python." result1 = re.sub(pattern,"php",string) # 所有替换 result2 = re.sub(pattern,"php",string,2) # 最多替换2次 print(result1) print(result2)
结果以下:string
hellomyphpisphpurphpnd hellomyphpisphpurpythonend
第一行输出,因为没有设置第四个参数,所有替换。it