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)
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)