2012-01-23 21 views
7

PHP में एक स्ट्रिंग के भीतर रेगेक्स पटर खोजने के लिए ध्वज PREG_OFFSET_CAPTURE के साथ फ़ंक्शन preg_match फ़ंक्शन का उपयोग कर सकते हैं और पता है कि पहले क्या और क्या आता है। उदाहरण के लिए, स्ट्रिंग aaa bbb ccc ddd eee fff को देखते हुए, मैं से मेल-विभाजन r'ddd' चाहते और होगा:पायथन रेगेक्स खोज और विभाजित

before = 'aaa bbb ccc ' 
match = 'ddd' 
after = ' eee fff' 

अजगर में यह करने के लिए कैसे? धन्यवाद

उत्तर

12

आप re.split() उपयोग कर सकते हैं, लेकिन आप पैटर्न के आसपास कोष्ठक डाल करने के लिए इतनी के रूप में मैच बचाने की जरूरत है:

>>> re.split('(ddd)', 'aaa bbb ccc ddd eee fff', 1) 
['aaa bbb ccc ', 'ddd', ' eee fff'] 

लेकिन इस मामले में आप सब पर एक regex की जरूरत नहीं है:

>>> 'aaa bbb ccc ddd eee fff'.partition('ddd') 
('aaa bbb ccc ', 'ddd', ' eee fff') 

संपादित करें: मुझे शायद यह भी उल्लेख करना चाहिए कि re.split के साथ आपको सभी मिलान करने वाले समूह मिलेंगे, इसलिए आपको इसके लिए तैयार रहना होगा या हर जगह गैर-कैप्चरिंग समूहों का उपयोग करना होगा, अन्यथा आप पीआर के लिए ब्रांड्स का उपयोग करेंगे ईसाई:

>>> re.split('(d(d)d)', 'aaa bbb ccc ddd eee fff', 1) 
['aaa bbb ccc ', 'ddd', 'd', ' eee fff'] 
+0

नहीं पता था कि आप 're.split()' के साथ ऐसा कर सकते हैं। धन्यवाद –

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