2013-04-07 7 views
15

मैं मुसीबत नीचे परिदृश्य के लिए सही रेगुलर एक्सप्रेशन खोजने आ रही हैं:अजगर रेगुलर एक्सप्रेशन मिलान पूरे शब्द

चलें कहते हैं:

a = "this is a sample" 

मैं पूरी शब्द का मिलान करना चाहते हैं - उदाहरण के मैच के लिए "hi" चाहिए "hi" के बाद से झूठी वापसी एक शब्द नहीं है और "is" सत्य वापस आना चाहिए क्योंकि बाईं तरफ और दाईं तरफ कोई अल्फा वर्ण नहीं है।

+0

मैंने इस प्रश्न को फिर से खोल दिया क्योंकि इसे गलत पोस्ट के साथ डुप्लिकेट के रूप में बंद कर दिया गया था। –

उत्तर

23

re.search(r'\bis\b', your_string) 

the docs से प्रयास करें:

\ b रिक्त स्ट्रिंग से मेल खाता है, लेकिन केवल शुरुआत या एक शब्द के अंत में।

ध्यान दें कि re मॉड्यूल एक के रूप में "शब्द" के एक अनुभवहीन परिभाषा का उपयोग करता है "अक्षरांकीय के अनुक्रम या वर्ण को रेखांकित", जहाँ "अक्षरांकीय" स्थान या यूनिकोड विकल्पों पर निर्भर करता है।

+2

धन्यवाद, मैंने झंडे = re.IGNORECASE – user2161049

+1

जोड़ा यह शब्द = "परीक्षण!" के लिए काम नहीं किया द! इसे तोड़ता है इस कथन में – user2161049

+0

क्या ** आर ** की आवश्यकता है - re.search (** r ** '\ bis \ b', your_string)? – swordholder

-4

रेगेक्स के साथ समस्या यह है कि यदि एचटीई स्ट्रिंग आप किसी अन्य स्ट्रिंग में खोजना चाहते हैं तो रेगेक्स वर्णों में यह जटिल हो जाता है। ब्रैकेट के साथ कोई स्ट्रिंग असफल हो जाएगी।

इस कोड को एक शब्द

word="is" 
    srchedStr="this is a sample" 
    if srchedStr.find(" "+word+" ") >=0 or \ 
     srchedStr.endswith(" "+word): 
     <do stuff> 

प्रत्येक पक्ष पर एक अंतरिक्ष और दूसरे भाग के साथ पाठ के लिए सशर्त खोज के पहले भाग स्ट्रिंग स्थिति के अंत पकड़ता मिल जाएगा। ध्यान दें कि endwith बूलियन है, जबकि find रिटर्न एक पूर्णांक

+2

इसे पढ़ना मुश्किल है, कृपया इसे संपादित करें। – davejagoda

+1

इसके अलावा, मुझे लगता है कि पहले से ही एक स्वीकार्य उत्तर दिया गया है - हो सकता है कि आप अपना जवाब हटाना चाहें और डाउनवोट के कारण प्रतिष्ठा को पुनर्प्राप्त कर सकें। – davejagoda

+0

@ डेवजगोडा जवाब को हटाने से उसकी प्रतिष्ठा ठीक हो जाएगी? –

1

regex में इस का उपयोग कर शब्द सीमा का प्रयास करें:

>>> x="this is a sample" 
>>> y="this isis a sample." 
>>> regex=re.compile(r"\bis\b") # For ignore case: re.compile(r"\bis\b", re.IGNORECASE) 
>>> regex.findall(y) 
[] 
>>> regex.findall(x) 
['is'] 

re.search() के प्रलेखन से।

It matches the empty string, but only at the beginning or end of a word 

E.g. r'\bfoo\b' matches 'foo', 'foo.', '(foo)', 'bar foo baz' but not 'foobar' or 'foo3' 

उम्मीद है कि यह मदद करता है!

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