- 匹配对象以及group()和groups()方法:当处理正则表达式时,除了正则表达式对象之外,还有另一个对象类型:匹配对象。这些是成功调用match()或者search()返回的对象。匹配对象有两个主要的方法:group()和groups()。
- group()要么返回整个匹配对象,要么根据要求返回特定子组。
>>> a = re.search(r"(\w)(.\d)","as.21") >>> a <_sre.SRE_Match object; span=(1, 4), match='s.2'> >>> a.group() #返回整个匹配对象 's.2' >>> a.group(0) 's.2' >>> a.group(1) #根据要求返回特定子组 's' >>> a.group(2) '.2'
groups()仅返回一个包含唯一或者全部子组的元组。
>>> a.groups() ('s', '.2') #返回全部子组,是包含在一个元组中的
如果没有子组的要求,那么当group()仍然返回整个匹配时,groups()返回一个空元组。
>>> a = re.search(r"\d+","334354") #没有子组匹配 >>> a.group() #返回整个匹配 '334354' >>> a.groups() #返回空元组 ()
-
re.match(pattern,string,flags=0)
match()试图从字符串的起始部分对模式进行匹配,如果成功则返回一个匹配对象,失败则返回None.
>>> import re >>> re.match(r"www","www.baidu.com") <_sre.SRE_Match object; span=(0, 3), match='www'> # 返回的是匹配对象 >>> type(re.match("www","www.baidu.com")) # 查看返回类型 <class '_sre.SRE_Match'> >>> print(re.match("com","www.baidu.com")) None
-
re.search(pattern, string, flags=0)
- 搜索整个字符串并返回第一个成功的匹配,成功则返回一个匹配对象,失败则返回None.
>>> re.search("com","www.baidu.com") <_sre.SRE_Match object; span=(10, 13), match='com'> >>> re.search("com","www.baidu.com.com.com") <_sre.SRE_Match object; span=(10, 13), match='com'> # 只返回第一个匹配的位置
-
re.findall(pattern, string, flags=0)
- 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表。如果没有找到匹配,则返回空列表。
>>> re.findall("com","www.baidu.com.com.com") ['com', 'com', 'com'] >>> re.findall("aa","www.baidu.com.com.com") []
-
re.fullmatch(pattern, string, flags=0)
- 完全匹配string,
>>> print(re.fullmatch("com","com")) <_sre.SRE_Match object; span=(0, 3), match='com'> >>> print(re.fullmatch("com","comssa")) #必须要完全匹配 None
-
re.finditer(pattern,string,flags=0)
- 查找所有匹配成功的字符串,并返回iteror
>>> re.finditer("com","www.baidu.com.com.com") #返回迭代器对象 <callable_iterator object at 0x00000247617F06D8> >>> list(re.finditer("com","www.baidu.com.com.com")) [<_sre.SRE_Match object; span=(10, 13), match='com'>, <_sre.SRE_Match object; span=(14, 17), match='com'>, <_sre.SRE_Match object; span=(18, 21), match='com'>]
-
re.sub()和re.subn()
- re.sub用于替换字符串中的匹配项,
- pattern : 正则中的模式字符串。
- repl : 替换的字符串,也可为一个函数。
- string : 要被查找替换的原始字符串。
- count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
>>> re.sub(r"[ae]","?","adsdeef") '?dsd??f' >>> re.subn(r"[ae]","?","adsdeef") # subn()比sub()多返回了一个替换的总数 ('?dsd??f', 3)