当我们利用python re库的match或search方法,从输入字符串中查找字符串时,如果找到对应的结果,则返回值不为None,而是Match对象。
以查找日期为例,假定我们的需求是如果包含日期串,则将年月日提取出来,否则,返回None。
pattern串大致是这样的:
"^(?P<year>\\d{4})[年|\\.|-](?P<month>\\d{1,2})[月|\\.|-](?P<day>\\d{1,2})日?"
用语言描述的话,以4个数字开头表示年份,以年.-三种字符之一作为年月之间的分隔符,紧接着1或2个数字表月份,以月.-作为月和日的分隔符,然后是1-2位数字表日期,尾部可以有“日”这个汉字。
范例
sentence=input('请输入字符串:')
match=re.search("^(?P<year>\\d{4})[年|\\.|-](?P<month>\\d{1,2})[月|\\.|-](?P<day>\\d{1,2})日?",sentence)
if match:
# 把匹配找到的<year>、<month>、<day>三个命名部分存储到字典之中
result = match.groupdict()
print('您的输入是:' , int(result['year']), '年', int(result['month']),'月',int(result['day']),'日')
图1 带命名的正则表达式串