正则表达式
匹配一组字符
其他元字符
核心函数和方法
match函数
- 尝试用正则表达式模式从字符串的开头匹配,如果匹配成功,则返回一个匹配对象;否则返回None
>>> import re
>>> m = re.match('foo', 'food') #成功匹配
>>> print(m)
<_sre.SRE_Match object; span=(0,3), match='foo'>
>>>
>>> m = re.match(‘foo’, ‘seafood’) #未能匹配
>>> print(m)
None
search函数
- 在字符串中查找正则表达式模式的第一次出现,如果匹配成功,则返回一个匹配对象;否则返回None
>>> import re
>>> m = re.search('foo','food')
>>> print(m)
<_sre.SRE_Match object; span=(0,3), match='foo'>
>>>
>>> m = re.search(‘foo’,‘seafood’) #可以匹配在字符中间的模式
>>> print(m)
<_sre.SRE_Match object; span=(3, 6), match='foo'>
group方法
- 使用match或search匹配成功后,返回的匹配对象可以通过group方法获得匹配内容
>>> import re
>>> m = re.match('foo', 'food')
>>> print(m.group())
foo
>>> m = re.search('foo','seafood')
>>> m.group()
'foo'
findall函数
- 在字符串中查找正则表达式模式的所有(非重复)出现;返回一个匹配对象的列表
>>> import re
>>> m = re.search('foo', 'seafood is food')
>>> print(m.group()) #search只匹配模式的第一次出现
foo
>>>
>>> m = re.findall(‘foo’,‘seafood is food’) #获得全部的匹配项
>>> print(m)
['foo', 'foo']
finditer函数
- 和findall()函数有相同的功能,但返回的不是列表而是迭代器;对于每个匹配,该迭代器返回一个匹配对象
>>> import re
>>> m = re.finditer('foo','seafood is food')
>>> for item in m:
... print(item.group())
...
foo
foo
compile函数
• 对正则表达式模式进行编译,返回一个正则表达式对象
• 不是必须要用这种方式,但是在大量匹配的情况下,可以提升效率
>>> import re
>>> patt = re.compile('foo')
>>> m = patt.match('food')
>>> print(m.group())
foo
split方法
• 根据正则表达式中的分隔符把字符分割为一个列表,并返回成功匹配的列表
• 字符串也有类似的方法,但是正则表达式更加灵活
>>> import re #使用 . 和 - 作为字符串的分隔符
>>> mylist = re.split('\.|-','hello-world.data')
>>> print(mylist)
['hello', 'world', 'data']
sub方法
- 把字符串中所有匹配正则表达式的地方替换成新的字符串
>>> import re
>>> m = re.sub('X', 'Mr.Smith', 'attn: X\nDear X')
>>> print(m)
attn: Mr. Smith
Dear Mr. Smith