Monday 15 August 2011

Java regex possesive quantifiers -


इस regex को देखते हुए:

  x [^ x] * + x   

और मिलान करने के लिए यह इनपुट स्ट्रिंग:

  xbbbx   

परिणाम मिलान टेक्स्ट है xbbbx इंडेक्स 0 से शुरू होने और सूचकांक 5 पर समाप्त होता है।

लेकिन, केवल regex और स्ट्रिंग दोनों में अंतिम अक्षर x से Z को बदलकर, हमें यह regex मिलता है:

  x [^ x] * z   

और यह इनपुट स्ट्रिंग:

  xbbbZ   

और इसका नतीजा यह है: कोई मेल नहीं मिला

एक पत्र में बदलाव व्यवहार में यह परिवर्तन क्यों दिखाएगा?

इसका कारण यह है कि आप "स्वैच्छिक" क्वांटिफ़ायर का उपयोग कर रहे हैं जो कि जितना प्रतीक प्रतीक होगा कर सकते हैं।

तो इस मामले में xbbbZ के साथ regex x [^ x] * + लाइन के अंत तक सभी गैर एक्स वर्णों से मेल खाता है, जहां यह बंद हो जाता है यह पहले से ही इनपुट xbbbZ के अंदर "Z" का सेवन किया है। यह regex, x [^ x] * + x , के साथ काम करता है < कोड> एक्सबीबीबीएक्स क्योंकि x तक पहुंचने पर रोक देने के लिए "स्वैच्छिक" क्वांटिफ़ायर है । आपके इनपुट के अंत में एक x होता है, और इसलिए स्वत्वशील क्वाण्टिफायर बंद हो जाता है। यह regex x के अंतिम भाग को x से मेल खाने की अनुमति देता है।

जावा के अंत में, आप एक अन्य उदाहरण देख सकते हैं स्वैच्छिक क्वांटिफायर।

No comments:

Post a Comment