2016-06-22 1 views
0

私はPythonで上記のタイムスタンプパターンのための正規表現を形成するのが難しいと思っています。私は、このパターンに一致するタイムスタンプを、Pythonのリストで検索する必要があります。Timestamp Regex python(2016-06-22 07:55:35,232)

例えば、

2016年6月22日07:55:35232 [12]私は2016年6月22日07検索する必要が上記ラインにおいてINFO

:55:35232。

私は、次の正規表現を試してみましたが、それは動作していないよう:

"^\\d{4}[-]?\\d{1,2}[-]?\\d{1,2} \\d{1,2}:\\d{1,2}:\\d{1,2}[,]?\\d{1,3}$" 

は親切

おかげ

+0

はい、オンラインでそれを試すことができ、私が試してみました。これは私が思い付くことができる最も近いものです。 \\ d {4} [ - ]?\\ d {1,2} [ - ]?\\ d {1,2} \\ d {1,2}:\\ d {1,2}: \\ d {1,2} [、]?\\ d {1,3} $ "ですが、正しいかどうかはわかりません。 – user2829222

+0

@Gautham質問を編集してください。 –

+0

あなたは何を日付の作成に使用していますか?すべての日付が欲しいですか?それとも、その日時ですか? –

答えて

2

を助けるあなたの問題は終わりに$印である - それを削除あなたの正規表現から。 $(行の終わり)が^$正規表現は、文字列全体と一致した場合、文字列だけで今までに、正規表現でマッチされることを確実にすると、あなたの正規表現をカプセル化[12] INFO

>>> re.findall("^\\d{4}[-]?\\d{1,2}[-]?\\d{1,2} \\d{1,2}:\\d{1,2}:\\d{1,2}[,]?\\d{1,3}$", '2016-06-22 07:55:35,232 [12] INFO') 
[] 
>>> re.findall("^\\d{4}[-]?\\d{1,2}[-]?\\d{1,2} \\d{1,2}:\\d{1,2}:\\d{1,2}[,]?\\d{1,3}", '2016-06-22 07:55:35,232 [12] INFO') 
['2016-06-22 07:55:35,232'] 
0

と一致していないので、あなたが戻って何かを得ることはありません^は文字列の先頭を意味し、$は最後を意味するからです。どこにでも一致させたい場合は、^$の両方を削除する必要があります。文字列の開始時にタイムスタンプのみを一致させる場合は、^のままで、$を削除してください。文字列の末尾に[12] INFOがあるため、現在一致が得られません。

+1

補題: '^ ... $'は、複数行モードで1行の先頭と末尾にも一致します – Delioth

+0

@Delioth Right。これは良いことです。 '$'は文字列の終わりまたは改行文字の直前にマッチします。 – Andrew

0

あなたのパターンは正常に動作しますが、$のために文字列の最後にのみ一致しています。

あなただけのこれを一致させたい場合は:

2016-06-22 07:55:35,232 

あなたは、この正規表現を使用することができます。

(?P<date>\d{4}[-]?\d{1,2}[-]?\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}[,]?\d{1,3}) 

あなたはRegex101