我有点困惑,因为我正在尝试使用我已经测试并且有效的正则表达式,但似乎不适用于Python
^(3[01]|[12][0-9]|0?[1-9])/(1[0-2]|0?[1-9])/(?:[0-9]{2})?[0-9]{2}$
我想匹配mm / yy和dd / mm / yyyy
答案 0 :(得分:0)
这应该有效并且与你正在做的类似。
([01]?[0-9])\/([0-3]?[0-9])\/([0-9]{2,4})
答案 1 :(得分:0)
兄弟试试这个,
'(3[01]|[12][0-9]|0?[1-9])/([0]*[1-9]|[1][012])/([0-9]{2,4})'
我已对此进行了测试,您可以在
上查看import re
myString = "Todays date is 31/12/2015 and tomorrow's date is 1/1/15"
myList = re.findall('(3[01]|[12][0-9]|0?[1-9])/([0]*[1-9]|[1][012])/([0-9]{2,4})',myString)
print myList
答案 2 :(得分:0)
^(3[01]|[12][0-9]|0?[1-9])/(1[0-2]|0?[1-9])/(?:[0-9]{2})?[0-9]{2}$
我想匹配mm / yy和dd / mm / yyyy
你的正则表达式已匹配 dd / mm / yyyy 。要同时匹配 mm / yy ,您只需将 dd / 部分与(?:
)?
一起封装就可选世纪数字。
regex = '^(?:(3[01]|[12][0-9]|0?[1-9])/)?(1[0-2]|0?[1-9])/(?:[0-9]{2})?[0-9]{2}$'
import re
print re.match(regex, '30/12/15').group(0,1,2)
#('30/12/15', '30', '12')
print re.match(regex, '12/15').group(0,1,2)
#('12/15', None, '12')
答案 3 :(得分:-2)
你的正则表达式(不是雷鬼:在标题中很有趣)语法已经符合python标准。
你是怎么用的?向我们展示您的代码并告诉我们您的期望!
更简单的方法:
>>> import re
>>> x = '30/12/15'
>>> print(re.search('^(\d{2})/(\d{2})/(\d{2,4})$', x).groups())
('30', '12', '15')
>>> x = '30/12/2015'
>>> print(re.search('^(\d{2})/(\d{2})/(\d{2,4})$', x).groups())
('30', '12', '2015')
你可以开始你的工作,并在正则表达式仍然匹配测试之间进行更深入和更深入的研究
(?: )
这适用于没有捕获的分组。
如果您希望退回'15',请不要使用此
最后但并非最不重要的是,当正则表达式变得如此复杂时,请使用python本身:
>>> x = '30/12/2015'
>>> a = x.split("/")
>>> if a[0] >=1 and a[0] <= 31 ... # to be completed