2009-07-20 18 views
35

क्या नियमित अभिव्यक्तियों में स्ट्रिंग नकारात्मक करना संभव है? मुझे उन सभी तारों से मिलान करने की आवश्यकता है जिनमें स्ट्रिंग ".." नहीं है। मुझे पता है कि आप ^[^\.]*$ का उपयोग उन सभी तारों से मेल खाने के लिए कर सकते हैं जिनमें "." नहीं है लेकिन मुझे एक से अधिक वर्णों से मेल खाना चाहिए। मुझे पता है कि मैं बस ".." युक्त स्ट्रिंग से मेल खाता हूं और फिर उसी परिणाम को प्राप्त करने के लिए मैच के वापसी मूल्य को अस्वीकार कर सकता हूं लेकिन मुझे आश्चर्य हुआ कि यह संभव था या नहीं।नियमित अभिव्यक्तियों का उपयोग करके स्ट्रिंग अस्वीकरण

+0

लिंक्ड: [नियमित अभिव्यक्तियां और एक संपूर्ण चरित्र समूह को अस्वीकार करना] (http://stackoverflow.com/questions/977251/regular-expressions-and-negating-a-whole-character-group) – Unihedron

उत्तर

42

आप नकारात्मक lookaheads उपयोग कर सकते हैं:

^(?!.*\.\.).*$ 

अभिव्यक्ति के लिए यह दो अवधियों के अनुक्रम स्ट्रिंग में कहीं भी मिल सकता है से मेल नहीं का कारण बनता है कि।

+6

आह, निंजा संपादन कौशल :) +1 –

5
^(?:(?!\.\.).)*$ 

स्ट्रिंग में कहीं भी दो लगातार डॉट्स नहीं होने पर ही मेल खाएगा।