2013-05-13 10 views
13

मैंकैप्चर समूह कैसे प्राप्त करें जो हमेशा मौजूद नहीं है?

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

जब यह मेल खाता है मैं आसानी से पहले दो समूहों प्राप्त कर सकते हैं की तरह एक regex कुछ है, लेकिन कैसे करता है, तो तीसरे हुआ 0 या 1 बार मैं जाँच करते हैं।

इसके अलावा एक और नाबालिग प्रश्न: (\.\d\d) में मैं केवल \d\d के बारे में हिस्सा है, regex कि \.\d\d 0 या 1 बार प्रकट करने के लिए की जरूरत है बताने के लिए किसी अन्य तरीके से देखभाल करते हैं, लेकिन मैं केवल \d\d भाग पर कब्जा करना चाहते हैं कि?

यह एक

hhmmss पार्स करने

स्ट्रिंग है कि कुछ सेकंड के लिए वैकल्पिक दशमलव हिस्सा है (इसलिए यह

hhmmss.ss हो जाता है की एक समस्या पर आधारित था

) ... मैंनेलगाया प्रश्न मेंइसलिए यह स्पष्ट है कि \d\d मैं किस बारे में बात कर रहा हूं।

+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

संबंधित मुद्दे