2012-05-07 11 views
0

PythonのPythonの正規表現の日付ギ

text = '4/13'については
reg = "((1[0-2])|(0?[1-9]))/((1[0-9])|(2[0-9])|(3[0-1])|(0?[0-9]))" 
match = re.findall(reg, text, re.IGNORECASE) 
print match 

の日付形式MM/DDを認識するためのREの書き込みしようとすると、それは私に

[('4', '4', '', '13', '13', '', '', '')] 

なく

'4/13' 
を与えます

ありがとう、 Cheng

+0

[datetimeに文字列を変換する]の可能な複製(http://stackoverflow.com/questions/466345/converting-string-into-datetime) –

答えて

1

他の回答がより直接的ですが、あなたもあなたの正規表現の周りにカッコの余分なペアを追加することができます。

reg = "(((0?[1-9])|(1[0-2]))/((1[0-9])|(2[0-9])|(3[0-1])|(0?[0-9])))"

findallはあなたを与える:

[('4/13', '4', '4', '', '13', '13', '', '', '')]

'4/13' fr上記のom。

+0

クール、それは動作します。ちなみに – cheng

+0

、どうすれば4Sと13Sを取り除くことができますか? – cheng

+0

この場合、 'findall'を使うことはできません。 'findall'は、中括弧の中のすべてのパターンを見つけます。だから、あなたは外側のパターン '' 4/13 ''で、あなたは '' 4 ''、 '' 13 ''のような内側のパターンと一緒に探しています。 – mohit6up

3

re.findallを使用しないでください。 re.matchを使用します。

reg = "((0?[1-9])|(1[0-2]))/((1[0-9])|(2[0-9])|(3[0-1])|(0?[0-9]))" 
match = re.match(reg, text, re.IGNORECASE) 
print match.group()