我正在编写一个程序来验证并纠正给定的日期字符串。让我们以04121987
作为格式为ddmmyyyy
的日期。这种日期的正则表达式:
(0[1-9]|[12][0-9]|3[01])(0[1-9]|1[012])(19\d\d|20\d\d)
如果我使用正则表达式匹配字符串,在Python中它可以很好地工作。
>>> regex = re.compile(r'(0[1-9]|[12][0-9]|3[01])(0[1-9]|1[012])(19\d\d|20\d\d)')
>>> regex.findall('04121987')
[('04', '12', '1987')]
如果我有一个字符串
04721987
,可以清楚地看到72
不是有效的月份,因此该字符串将不匹配正则表达式。>>> regex.findall('04721987')
[]
我想找出导致正则表达式失败的字符及其位置。在这种情况下,它是
7
。我在Python中该如何实现?
13
。单独一个字符都不会使正则表达式失效,而是两个字符的组合导致了失效。 - Janne Karila(0[1-9]|1[012])
,但它并不起作用。 - satran