1.用括号分组
>>> phoneNumberRegex = re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)')
>>> mo = phoneNumberRegex.search('My number is 415-555-4242')
>>> mo.group(1)
'415'
>>> mo.group(2)
'555-4242'
>>> mo.group(0)
'415-555-4242'
>>> mo.group()
'415-555-4242'
>>> mo.groups()
('415', '555-4242')
>>> areaCode, mainNumber = mo.groups()
>>> print(areaCode)
415
2.用管道匹配多个字符
r'Batman|Tina Fey'将匹配'Batman'或'Tina Fey'
如果要匹配真正的管道字符,就用倒斜杠转义,即|\。
3.用问号实现可选匹配
4.用星号匹配零次或多次
5.用加号匹配一次或多次
6.用花括号匹配特定次数
(Ha){3,5} 将匹配HaHaHa,HaHaHaHa,HaHaHaHaHa
{n}匹配n次前面的分组
{n,}匹配n次或更多次前面的分组
{,m}匹配0次到m次分组
7.贪心匹配
Python的正则表达式默认是贪心的,即会尽可能匹配最长的字符串。花括号后跟一个问号则表示非贪心,匹配最短的
7.findall方法
返回一个匹配字符串的列表,如果有分组,则返回一个字符串的元组的列表
\d\d\d-\d\d\d-\d\d\d\d,findall返回'415-555-9999', '332-432-4444'
(\d\d\d)-(\d\d\d)-(\d\d\d\d),findall返回('415','555','9999'), ('332', '432', '4444')
8.字符分类
\d 0到9的任何数字
\D 除0到9的数字意外的任何字符
\w 任何字母、数字或下划线
\W 除字母、数字和下划线以外的任何字符
\s 空格、制表符或换行符
\S 除空格、制表符和换行符以外的任何字符
9.建立自己的字符分类
r'aeiouAEIOU'将匹配所有的元音字母
r'^aeiouAEIOU' 将匹配所有非元音字符
r'^\d+$' 匹配从开始到结束都是数字的字符串。^spam表示必须以spam开始,spam$表示必须以spam结束
10.通配字符:.(句点)
11.用.*匹配所有字符
12.通过传入re.DOTALL作为re.compile()的第二个参数,可以让句点匹配所有字符,包括换行
13.不区分大小写的匹配。通过向re.compile()传入re.IGNORECASE或re.I,作为第二个参数
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。