能否请你帮我蟒蛇正则表达式,可以匹配正则表达式的重复模式
9am, 5pm, 4:30am, 3am
简单地说 - 它的时间以CSV格式列表
我知道时间的模式,在这里是:
'^(\\d{1,2}|\\d{1,2}:\\d{1,2})(am|pm)$'
能否请你帮我蟒蛇正则表达式,可以匹配正则表达式的重复模式
9am, 5pm, 4:30am, 3am
简单地说 - 它的时间以CSV格式列表
我知道时间的模式,在这里是:
'^(\\d{1,2}|\\d{1,2}:\\d{1,2})(am|pm)$'
^(\d+(:\d+)?(am|pm)(, |$))+
将为您工作。
它甚至可以匹配任何附加的文本添加在它的末尾 – user2349115
@ user2349115 - 什么样的文本?你能给我输入吗? – TheLostMind
“9am,5pm,4:30 am,3amsdfkldnfknskflksd hello” - text – user2349115
如果你有一个正则表达式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)*$
您可以使用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
。使用下面的正则表达式:
tstr = '9am, 5pm, 4:30am, 3amsdfkldnfknskflksd hello'
print(re.findall(r'\b\d+(?::\d+)?(?:am|pm)', tstr))
输出:
['9am', '5pm', '4:30am', '3am']
我必须具备r级egex的文字给出。我提供的模式仅适用于“上午9点”或“下午10点30分”,但不适用于“上午9点,下午3点30分”的时段csv – user2349115
https://txt2re.com/index-python.php3?s=4 :30 am,%209am&2&10&6 –