2015-09-28 11 views
7

मैं इन ब्रैकेट्स [[ ]] में संलग्न सभी डेटा ढूंढना चाहता हूं।पायथन रेगेक्स आंशिक निकास

[[aaaaa]] -> aaaaa (फिर लाइब्रेरी का उपयोग कर)

मेरे अजगर कोड था

la = re.findall(r'\[\[(.*?)\]\]', fa.read()) 

क्या मैं केवल 'एक' [[a|b]]

से निकालना चाहते हैं, तो

इस कार्य के लिए कोई संक्षिप्त नियमित अभिव्यक्ति? (| से पहले डेटा निकालें)

या मुझे अतिरिक्त कथन का उपयोग करना चाहिए?

उत्तर

3

आप कोशिश कर सकते हैं: जब तक एक | या ] पाया जाता है

r'\[\[([^\]|]*)(?=.*\]\])' 

([^\]|]*) से मेल खाएगी। और (?=.*\]\]) यह सुनिश्चित करने के लिए एक लुकहेड है कि ]] मिलान के आरएचएस पर मेल खाता है।

परीक्षण:

>>> re.search(r'\[\[([^\]|]*)(?=.*\]\])', '[[aaa|bbb]]').group(1) 
'aaa' 
>>> re.search(r'\[\[([^\]|]*)(?=.*\]\])', '[[aaabbb]]').group(1) 
'aaabbb' 
+1

संक्षिप्त जवाब और स्पष्टीकरण प्रदान करने के लिए धन्यवाद। मुझे नियमित अभिव्यक्ति के बारे में अधिक लेख पढ़ना चाहिए। – SUNDONG

+0

ध्यान देने योग्य केवल एक चीज - यह नेस्टेड ब्रैकेट को संभाल नहीं पाएगी (और वास्तव में काउंटर की मदद के बिना एक रेगेक्स सामान्य रूप से नहीं होगा)। – brandonscript

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