2008-10-30 15 views
73

re मॉड्यूल का उपयोग करके मैं सभी मैचों की शुरुआत और अंत स्थिति कैसे प्राप्त कर सकता हूं? उदाहरण के लिए पैटर्न r'[a-z]' और स्ट्रिंग 'a1b2c3d4' दिया गया है, मैं उन पदों को प्राप्त करना चाहता हूं जहां यह प्रत्येक अक्षर पाता है। आदर्श रूप से, मैं भी मैच का पाठ वापस प्राप्त करना चाहता हूं।पायथन रेगेक्स - मिलानों की स्थिति और मूल्य कैसे प्राप्त करें

+0

देखें कि यह मदद करता है [मिलान ऑब्जेक्ट्स] (http://www.python.org/doc/2.5.2/lib/match-objects.html) – EBGreen

उत्तर

93
import re 
p = re.compile("[a-z]") 
for m in p.finditer('a1b2c3d4'): 
    print m.start(), m.group() 
+4

दस्तावेज़ों से लिंक: https://docs.python.org /2/library/re.html#re.finditer –

36

Regular Expression HOWTO से लिया

अवधि() रिटर्न दोनों शुरू करने और एक भी टपल में अंत अनुक्रमित। चूंकि मिलान विधि केवल तभी जांचती है जब स्ट्रिंग की शुरुआत में आरई मिलान होता है, प्रारंभ() हमेशा शून्य होगा। हालांकि, RegexObject उदाहरणों की खोज विधि स्ट्रिंग के माध्यम से स्कैन करती है, इसलिए मिलान उस स्थिति में शून्य पर शुरू नहीं हो सकता है।

>>> p = re.compile('[a-z]+') 
>>> print p.match('::: message') 
None 
>>> m = p.search('::: message') ; print m 
<re.MatchObject instance at 80c9650> 
>>> m.group() 
'message' 
>>> m.span() 
(4, 11) 

कम्बाइन उस के साथ:

अजगर 2.2 में, finditer() विधि भी उपलब्ध है, पुनरावर्तक के रूप में MatchObject उदाहरणों में से एक दृश्य लौटने।

>>> p = re.compile(...) 
>>> iterator = p.finditer('12 drummers drumming, 11 ... 10 ...') 
>>> iterator 
<callable-iterator object at 0x401833ac> 
>>> for match in iterator: 
...  print match.span() 
... 
(0, 2) 
(22, 24) 
(29, 31) 

आप

for match in re.finditer(r'[a-z]', 'a1b2c3d4'): 
    print match.span() 
+0

आप इसे 're.search (r'abbit', "गाजर का दाब" है) का उपयोग कर सकते हैं। अवधि (0) '-' (4, 9) ' –

4

के आदेश पर कुछ करने के लिए अजगर 3.x के लिए सक्षम होना चाहिए

from re import finditer 
for match in finditer("pattern", "string"): 
    print(match.span(), match.group()) 

आप करेगा मिल \n अलग tuples (के पहले और अंतिम सूचकांक शामिल मैच क्रमशः) और स्ट्रिंग में प्रत्येक हिट के लिए मैच स्वयं।

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