AM または PM の時間形式を一致させようとしています。
i.e. 02:40PM
12:29AM
次の正規表現を使用しています
timePattern = re.compile('\d{2}:\d{2}(AM|PM)')
AM
PM
しかし、数字のない文字列のみを返し続けます。何がうまくいかないのですか?
非キャプチャ グループ(?:
と一致グループへの参照を使用します。
re.I
大文字と小文字を区別しない一致に使用します。
import re
def find_t(text):
return re.search(r'\d{2}:\d{2}(?:am|pm)', text, re.I).group()
re.findall()
再帰的マッチングにも使用できます。
def find_t(text):
return re.findall(r'\d{2}:\d{2}(?:am|pm)', text, re.I)
見るdemo
誤って「0st」クラスター (全体の一致) ではなく、最初のクラスター (かっこ内のパターンの部分に一致するもの) を取得していませんか?