前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >正则表达式学习记录

正则表达式学习记录

原创
作者头像
用户6871371
修改2020-01-13 11:14:08
3380
修改2020-01-13 11:14:08
举报
文章被收录于专栏:Herik的专栏Herik的专栏

1.用括号分组

代码语言:txt
复制
>>> 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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档