15

AM または PM の時間形式を一致させようとしています。

i.e. 02:40PM
     12:29AM 

次の正規表現を使用しています

timePattern = re.compile('\d{2}:\d{2}(AM|PM)')

AM PMしかし、数字のない文字列のみを返し続けます。何がうまくいかないのですか?

4

5 に答える 5

36

非キャプチャ グループ(?:と一致グループへの参照を使用します。

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

于 2013-11-06T20:09:10.823 に答える
2

誤って「0st」クラスター (全体の一致) ではなく、最初のクラスター (かっこ内のパターンの部分に一致するもの) を取得していませんか?

于 2013-11-06T19:56:46.567 に答える