सबसे पहले धन्यवाद, एक चर नाम के रूप में str
प्रयोग से बचें। str
पहले से ही पाइथन में एक अर्थ है और इसे कुछ और होने के लिए परिभाषित करके आप लोगों को भ्रमित करेंगे।
कहा करने के बाद कि आप निम्न रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं:
>>> import re
>>> print re.findall(r'\[([^]]*)\]', s)
['Service Current', 'Service', '9991', '1.22']
यह इस प्रकार काम करता है:
\[ match a literal [
( start a capturing group
[^]] match anything except a closing ]
* zero or more of the previous
) close the capturing group
\] match a literal ]
एक वैकल्पिक नियमित अभिव्यक्ति है:
r'\[(.*?)\]'
इस से काम करता हैको छोड़कर कुछ भी मिलान करने के बजाय एक गैर लालची मैच का उपयोग करना 0।
स्रोत
2010-05-17 20:26:32
+ 1 अभिव्यक्ति आसान अगर आप सिर्फ यह गैर लालची बनाने के हो जाता है: '' \\ [\\ (*।?)]। ['Re.findall()'] से लिंक करें (http://docs.python.org/library/re.html#re.findall), ['re' से लिंक] (http://docs.python.org /library/re.html) –
@ फ़ेलिक्स: जोड़ा गया, धन्यवाद। –
ये अभिव्यक्ति स्ट्रिंग '' [] '' से मेल खाती हैं, साथ ही '[' ']' (खाली स्ट्रिंग) लौटती हैं। यदि उनके बीच कोई वर्ण वाले स्क्वायर ब्रैकेट को अनदेखा किया जाना चाहिए, तो पहले अभिव्यक्ति में '*' को '+' में बदला जा सकता है। आईई, 'आर' \ [([^]] +) \] ''। (दिलचस्प बात यह है कि गैर-लालची अभिव्यक्ति में '*' को प्रतिस्थापित करना प्रतीत नहीं होता है।) – jpmc26