转换为python正则表达式

时间:2015-12-30 22:51:37

标签: python regex

我有点困惑,因为我正在尝试使用我已经测试并且有效的正则表达式,但似乎不适用于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

4 个答案:

答案 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})'

我已对此进行了测试,您可以在

上查看

http://ideone.com/M0Ojqx

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