我在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>)
提前致谢!
答案 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}\)$'
要了解其工作原理,请参阅下面的图片和说明:
注意:您可以使用\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...
祝您好运!