2013-05-13 8 views
13

私は常に存在しないキャプチャグループを取得するには?

(\d\d\d)(\d\d\d)(\.\d\d){0,1} 

それが一致したときに、私は簡単に最初の2つのグループを得ることができますが、3分の1が0または1回発生した場合にどのように私はチェックしないように正規表現の何かを持っています。

また別のマイナーな問題:(\.\d\d)に私はたったの約\d\d一部、\.\d\dが0または1回出現する必要があることをregexで伝えるための他の方法を気に、私は唯一の\d\d一部をキャプチャしたいこと?

これは秒のためのオプションの小数部を持つ

HHMMSS

文字列を(パースの問題に基づいて、それが

hhmmss.ss

になりました

)...入れました何かについてはについて話しています。

+0

サンプル入力と予想される出力文字列を提供できる場合は、非常に役立ちます。 –

答えて

12
import re 

value = "123456.33" 

regex = re.search("^(\d\d\d)(\d\d\d)(?:\.(\d\d)){0,1}$", value) 

if regex: 
    print regex.group(1) 
    print regex.group(2) 
    if regex.group(3): 
     print regex.group(3) 
    else: 
     print "3rd group not found" 
else: 
    print "value don't match regex" 
+0

aaah noncapturing group ... tnx:D – NoSenseEtAl

+2

'{0,1}'は通常 '? 'と書かれています – georg

+3

@ thg435、はい。 '{0,1}'と '? 'は同じです。それが問題になっていたのでそのままにしておいた – stalk

関連する問題