小阳儿儿

正则
? :    [0,1]
*:    [0,多个]
+:    [1,多个]
[0-9]+:      匹配多个数字
[0-9]:        匹配单个数字
^:   为匹配输入字符串的开始位置。
$ :为匹配输入字符串的结束位置。
\w:    匹配字母数字及下划线


\d    匹配任意数字,等价于 [0-9].

r'(.*) are (.*?) .*'
    1、前面的一个 r 表示字符串为非转义的原始字符串,让编译器忽略反斜杠,也就是忽略转义字符。
但是这个字符串里没有反斜杠,所以这个 r 可有可无。
    2、 (.*) 第一个匹配分组,.* 代表匹配除换行符之外的所有字符。
    3、 (.*?) 第二个匹配分组,.*? 后面多个问号,代表非贪婪模式,也就是说只
匹配符合条件的最少字符后面的一个
    4、 .* 没有括号包围,所以不是分组,匹配效果和第一个一样,但是不计入
匹配结果中。


import re

s = '1102231990xxxxxxxx'
res = re.search('(?P<province>\d{3})(?P<city>\d{3})(?P<born_year>\d{4})', s)
print(res.groupdict())

 

posted on 2019-01-25 09:51  小阳儿儿  阅读(115)  评论(0编辑  收藏  举报