Python正则表达式验证这种格式的字符串

时间:2015-04-18 17:00:02

标签: python regex python-2.7

我在Python中验证这种类型的输入字符串时遇到了问题。

工作日的字符数可变。

Regular: 16Mar2009(mon), 17Mar2009(tues), 18Mar2009(wed)
Regular: 20Mar2009(fri), 21Mar2009(sat), 22Mar2009(sun)
Rewards: 26Mar2009(thur), 27Mar2009(fri), 28Mar2009(sat)

我想验证整行,每一行都应该有这种特定的格式:

<name>: <date>(<weekday>), <date>(<weekday>), <date>(<weekday>)

提前致谢!

2 个答案:

答案 0 :(得分:1)

试试这个:\w+: \d+\w+\(\w+\)(?:,\s*\d+\w+\(\w+\))*

使用像kiki-re这样的程序,您可以轻松地测试正则表达式。

答案 1 :(得分:0)

Regular: 20Mar2009(fri), 21Mar2009(sat), 22Mar2009(sun)

your_regex = r'^[A-Za-z]+:\s+(?:\d{1,2}[A-Za-z]{3}\d{4}\([A-Za-z]{3}\),\s+){2}
               \d{1,2}[A-Za-z]{3}\d{4}\([A-Za-z]{3}\)$'

要了解其工作原理,请参阅下面的图片和说明: enter image description here

注意:您可以使用\w,但与\w对应的字符类为[a-zA-Z0-9_]

r表示解释为原始字符串
^表示以
开头 [A-Za-z]表示字符类A,B,C ... Z和a,b,c,...中的任何字符.z
+表示前述
中的一个或多个 :与文字冒号相匹配 \s表示空格 (?:...)表示组,但不捕获(请参阅捕获替代(...)组的组 {x,y}意味着必须存在[x,y]之前的任何内容 {x}表示必须存在&#39; x&#39;在此之前发生的任何事情 \(\)表示(),但需要在\之后,因为括号是正则表达式中的特殊字符。
$表示以

结尾

虽然这可能不是您想要的,但它适用于您的输入,您现在希望有工具来更改它以满足您的需求。您应该考虑边缘情况,例如,在上面提出的解决方案中,您可以轻松匹配:blah: 99zzz0000...祝您好运!