你能不能得到我能匹配的python正则表达式
9am, 5pm, 4:30am, 3am
简单地说 - 它有csv格式的时间列表
我知道时间模式,这里是:
'^(\\d{1,2}|\\d{1,2}:\\d{1,2})(am|pm)$'
答案 0 :(得分:1)
^(\d+(:\d+)?(am|pm)(, |$))+
将为您效劳。
答案 1 :(得分:0)
如果你有一个正则表达式X
,并且你想要一个用逗号和(可选)空格分隔的列表,那么这很简单:
^X(,\s*X)*$
当然,X
是您当前的搜索模式没有锚点,但您也可以将其调整为更短。在我看来,一个更好的时代模式是:
\d{1,2}(:\d{2})?[ap]m
意味着你想要的完整模式是:
^\d{1,2}(:\d{2})?[ap]m(,\s*\d{1,2}(:\d{2})?[ap]m)*$
答案 2 :(得分:0)
您可以使用re.findall()
获取给定正则表达式的所有匹配项
>>> str = "hello world 9am, 5pm, 4:30am, 3am hai"
>>> re.findall(r'\d{1,2}(?::\d{1,2})?(?:am|pm)', str)
['9am', '5pm', '4:30am', '3am']
<小时/> 它的作用是什么?
\d{1,2}
匹配一位或两位数(?::\d{1,2})
匹配:
后跟一个2位数。 ?:
是为了防止正则表达式捕获该组。
最后的?
使这部分成为可选部分。 (?:am|pm)
匹配am
或pm
。答案 3 :(得分:0)
使用以下正则表达式模式:
tstr = '9am, 5pm, 4:30am, 3amsdfkldnfknskflksd hello'
print(re.findall(r'\b\d+(?::\d+)?(?:am|pm)', tstr))
输出:
['9am', '5pm', '4:30am', '3am']
答案 4 :(得分:0)