2010-06-03 13 views
5

मैं कुछ मेल खाने के लिए रेगेक्स कैसे बना सकता हूं? उदाहरण के लिए, मैं स्ट्रिंग "www.petroules.com" स्ट्रिंग नहीं है, जो सब कुछ मैच करने के लिए regex करना चाहता हूँ।रेगेक्स - कुछ कैसे मेल नहीं करना है?

मैंने [^www\.petroules\.com] की कोशिश की लेकिन ऐसा लगता है कि यह काम नहीं कर रहा था।

उत्तर

6
^(?!www\.petroules\.com$).*$ 

www.petroules.com के अलावा किसी भी स्ट्रिंग से मेल खाएगा। इसे negative lookahead कहा जाता है।

[^www\.petroules\.com] 

का अर्थ है "मैच डब्ल्यू, पी, ई, टी, आर, ओ, यू, एल, या डॉट को छोड़कर एक चरित्र"।

+0

बस मुझे जो चाहिए, धन्यवाद। जैसा कि आपने पहला सही उत्तर सबमिट किया है, ~ 10 मिनट में स्वीकार करेगा। –

+0

'। * $' एक नोप है और इसे छोड़ा जा सकता है। –

+0

ठीक है, लेकिन निश्चित रूप से मैच परिणाम एक खाली स्ट्रिंग होगा (एक सफल मैच के साथ)। यदि आप सिर्फ यह जांच रहे हैं कि कोई मिलान संभव है, तो इससे कोई फर्क नहीं पड़ता। तो हाँ, '। * $' को छोड़ दें, और आप तेज़ी से कर चुके हैं। –

3
(?!...) 

इसे नकारात्मक लुकहेड कहा जाता है। यह केवल तभी मिलेगा जब रेगेक्स ... मेल नहीं खाता है। हालांकि, ध्यान दें कि यह वर्णों का उपभोग नहीं करता है। इसका मतलब यह है कि यदि आप पिछले कुछ और जोड़ते हैं), तो यह तुरंत मेल खाना शुरू कर देगा, यहां तक ​​कि वर्ण जो नकारात्मक दिखने का हिस्सा थे।

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