2011-02-02 13 views
7

मुझे पता है कि रेगेक्स में, आप [^abc] जैसे प्रतीकों की सूचियों को अस्वीकार कर सकते हैं। मैं अपने इनपुट के बीच में एक पूरा शब्द देखने पर अस्वीकार करना चाहता हूं।रूबी रेगेक्स: पूरे शब्द को अस्वीकार करना

अधिक सटीक होने के लिए, मैं "" को छोड़कर "प्रिंट < कुछ भी" को अस्वीकार करना चाहता हूं। कुछ उदाहरण:

print all - match 
frokenfooster - no match 
print all nomnom - no match 
print bollocks - no match 
print allpies - no match 
+0

मुझे लगता है कि "मैं मिलान करना चाहता हूं" और आपके द्वारा प्रदान किए गए उदाहरण एक विरोधाभास हैं? –

+0

आह, हाँ यह था। मेरी गलती। – Mike

उत्तर

11

आप एक negative look-ahead के लिए देख रहे हैं। (रेफरी।using look-ahead and look-behind)

(?!exclude) 

शब्द पैटर्न में "बहिष्कृत" अयोग्य घोषित होगा।

+0

बिल्कुल सही। धन्यवाद। – Mike

+0

@ माइक: पी। मुझे लगता है कि आप '^ प्रिंट ((?! सभी $) की तलाश में हैं। *) $' ;-) –

+0

एंकरों को याद किया। अब बुलेट प्रूफ लगता है। :) – Mike

2

नियमित अभिव्यक्ति एक शब्द-ब्रेक \b का समर्थन करती है।

शब्द के अस्तित्व के लिए सर्च कर रहे हैं "सभी" एक स्ट्रिंग में के रूप में सरल है:

>> 'the word "all"'[/\ball\b/] #=> "all" 
>> 'the word "ball"'[/\ball\b/] #=> nil 
>> 'all of the words'[/\ball\b/] #=> "all" 
>> 'we had a ball'[/\ball\b/] #=> nil 
>> 'not ball but all'[/\ball\b/] #=> "all" 

ध्यान दें, यह शुरुआत है या एक स्ट्रिंग के अंत करने के लिए इसे प्रस्तोता नहीं लिया, क्योंकि \b पहचानता शब्द सीमाओं के रूप में स्ट्रिंग की शुरुआत और अंत भी।

+0

मुझे यह नहीं पता था - यह वास्तव में आसान है। – Mike

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