【问题标题】:Python Regex search not showing month textPython 正则表达式搜索不显示月份文本
【发布时间】:2018-11-28 07:39:16
【问题描述】:

我正在尝试根据 RegEx 模式验证字符串,然后我想要模式搜索中的月份和年份。模式匹配很好,我可以看到日期和年份但月份是空的

import re

txt = '25-Nov-18'
pattern = re.compile('^(\d{1,2})(\/|-)[a-zA-Z]{3}(\/|-)(\d{2})$')
if pattern.match(txt):
    m = pattern.search(txt)
    print(m.group(1), m.group(2), m.group(3), m.group(4))

结果是

25 - - 18

仅供参考:m.group(0) 是25-Nov-18

我在这里遗漏了什么吗? 还有比这更好的方法吗?

【问题讨论】:

  • 不,您没有遗漏任何东西,您只是打印了捕获的内容。见your regex demo。您一定想要'^(\d{1,2})[/-]([a-zA-Z]{3})[/-](\d{2})$' 并打印 3 个组。见this demo

标签: python regex


【解决方案1】:

您只是缺少一些括号和另一个组,您必须将要恢复的所有内容括在括号中。

import re

txt = '25-Nov-18'
pattern = re.compile('^(\d{1,2})(\/|-)([a-zA-Z]{3})(\/|-)(\d{2})$')
if pattern.match(txt):
    m = pattern.search(txt)
    print(m.group(1), m.group(2), m.group(3), m.group(4), m.group(5))

【讨论】:

    猜你喜欢
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 2011-12-27
    • 2015-02-23
    相关资源
    最近更新 更多