源串: s = 'ID: 042 SEX: M DOB: 1967-08-17 Status: Active 1968'
p = re.compile(r'(19|20)\d{2}')
s = 'ID: 042 SEX: M DOB: 1967-08-17 Status: Active 1968'
print p.search(s).group()
print p.findall(s)
我想找到19或20开头的, 后面捡完整的2位数字, 如 上面的表达式,
当调用 search的时候, 我希望输出 1967和1968, 而 p.findall我希望输出['1967','1968']
使用re模块的search函数,能过正则表达式查找,代码如下:迅洞
import re
reg=re.compile(r"(?<=指定字符)\d+")
match=reg.search("待查亩差枯找文本")
print match.group(0)
(?<=指定字符)此部分定位指定字符,查找但不包含
\d+此部分为一个以上数字
这样就可以查找出数字庆物字符串
1. 首先 p.search(s) 只会颤滚找第一个匹配的字符串
2. 其次 p.findall(s) 会记录匹配的组,而(19|20) 代表一个组,应该改成(?:19|20)
以下代码可迅大以满足你的要求:
# -*- coding: utf-8 -*-
from __future__ import print_function, division
import re
s = 'ID: 042 SEX: M DOB: 1967-08-17 Status: Active 1968'
p = re.compile(r'(?:19|20)\亩洞竖d{2}')
#s = 'ID: 042 SEX: M DOB: 1967-08-17 Status: Active 1968'
all_items = re.findall(p,s)
map(print, all_items)
print(all_items)