能否請你幫我蟒蛇正則表達式,可以匹配正則表達式的重複模式
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 –