2010-02-17 15 views
5

से मेल नहीं खाती है मुझे लगता है कि मुझे तर्क में वास्तव में कमजोर हो रहा है।नियमित अभिव्यक्ति "www"

मुझे एक नियमित अभिव्यक्ति लिखनी है जो www को छोड़कर सबकुछ से मेल खाती है। यह wwwd, abcd और अन्य सभी से मेल खाना चाहिए, बस www से मेल खाना चाहिए। (हे भगवान, कृपया, यह बहुत आसान नहीं होना चाहिए)।

मैं रूबी भाषा के नियमित अभिव्यक्ति के कार्यान्वयन का उपयोग कर रहा हूं।

अद्यतन: मुझे नियमित अभिव्यक्ति का उपयोग करने की आवश्यकता है और न केवल text != 'www' क्योंकि यह एपीआई डिज़ाइन किया गया है। यह पैटर्न तर्क के रूप में अपेक्षा करता है और परिणाम नहीं है।

उत्तर

10

क्यों regex? text != "www" पर्याप्त नहीं है?

यहाँ यह फिर भी (look-ahead उपयोग करता है) है: ^(?!www$).*

+0

इस मैच रिक्त स्ट्रिंग। –

+0

@ डीजेडब्ल्यू: थैक्स, निश्चित – soulmerge

4

यह एक सादे वेनिला regex है। कुछ बोलीभाषाओं में नकारात्मक दावे के साथ आप कर सकते हैं प्रशंसक चीजें हैं।

^(.|..|[^w]..|.[^w].|..[^w]|.....*)$ 

अंग्रेजी में:

तुम कुछ ठीक एक चरित्र, ठीक दो अक्षर, ठीक तीन वर्ण, जहां उन 3 कम से कम एक एक डब्ल्यू नहीं है, या अधिक से अधिक 3 वर्ण लंबा है कि चाहते हैं।

+0

+1 अच्छा दृष्टिकोण। पिछले समूह में बस एक अनिवार्य अवधि। – soulmerge

+1

@ गम्बो: क्यों? '। [^ डब्ल्यू]। 'मैच' वाह '। – soulmerge

+0

@ सोलमेर: आखिरी अवधि अनिवार्य नहीं है (मान लीजिए कि आप कह रहे हैं कि यह पांच अवधि नहीं होनी चाहिए)। यह कुल पांच अवधि के लिए चार अवधि (....) प्लस शून्य या अधिक अतिरिक्त वर्ण (। *) है। इसे ".... +" के रूप में भी निर्दिष्ट किया जा सकता है। –

1

लॉरेंस गोंसाल्व्स (*) के समान सामान्य विचार, लेकिन ऐसा लगता है कि कोई मुझे ^.$|^..$|^....+$|.*[^w].* कह सकता है कि 1, 2 या 3 से अधिक वर्ण प्रारंभ और अंत के बीच, या गैर-डब्ल्यू वाले किसी भी संख्या के बीच है।

(*) मैं वास्तव में इसका मतलब उनके उत्तर पर टिप्पणी करने के लिए था, लेकिन गलती से इसे अपने उत्तर के रूप में पोस्ट किया। मुझे लगता है कि मैं इसे यहाँ छोड़ दूंगा।

+0

ओह, अच्छा सरलीकरण। +1 –

0

बस गैर "www" स्ट्रिंग, न कि पूरी शब्द पर एक और दृष्टिकोण

^.{0,2}([^w].*|.{4,})?$ 
संबंधित मुद्दे