2013-05-13 12 views
13

Ben Her zaman olmayan bir yakalama grubu nasıl alınır?

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

ben kolayca ilk iki grubu alabilirsiniz maçları

gibi regex şey var, ama nasıl üçüncü 0 veya 1 kez oluştu diye kontrol gerçekleştirilir.

Ayrıca başka minör soru: (\.\d\d) ben sadece yaklaşık \d\d bölümünü, \.\d\d 0 veya 1 kez görünmesi gerektiğini regex anlatmak için başka bir şekilde bakım, ama sadece \d\d kısmını ele istediğiniz?

Bu

(yani

hhmmss.ss haline gelen bir

SSDDSS saniye opsiyonel ondalık kısmı vardır

dizesini ayrıştırma bir sorun dayanıyordu

) ...'ı koydumsorusuyla ilgili olarak, \d\d hakkında konuştuğum konu net.

+0

Bazı örnek girdileri ve beklenen çıkış dizelerini sağlayabilirseniz ÇOK yardımcı olur. –

cevap

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 toplanamayan grup ... tnx: D – NoSenseEtAl

+2

'{0,1}' genellikle '' '' '' '' 0 ' – georg

+3

@ thg435 olarak yazılır, evet. '{0,1}' ve '' 'aynıdır. Sadece söz konusu olduğu gibi tutuldu – stalk

İlgili konular