मुझे स्ट्रिंग की तरह
"string"पूर्व>से
"* s * t * r * i * n * g *"क्या regex पैटर्न है? भाषा जावा है।
आप खाली स्ट्रिंग से मिलान करना चाहते हैं, और "*" से प्रतिस्थापित करना चाहते हैं । इसलिए, इस तरह से कुछ काम करता है:
System.out.println ("string" .replaceAll ("", "*")); // "* s * t * r * i * n * g *" या बेहतर अभी तक, क्योंकि खाली स्ट्रिंग को रैजेक्स के बिना शाब्दिक रूप से मेल किया जा सकता है, आप बस ऐसा कर सकते हैं:
System.out.println ("string" .replace ("", "*")); // "* s * t * r * i * n * g *" यह क्यों काम करता है
ऐसा इसलिए है क्योंकि स्ट्रिंग शुरू होता है ("") , और समाप्त होता है ("") , और में ("")। किसी भी स्ट्रिंग में किसी भी दो वर्णों के बीच, एक खाली स्ट्रिंग। वास्तव में, इन स्थानों पर असंख्य खाली स्ट्रिंग्स हैं।
(और हाँ, यह खाली स्ट्रिंग के लिए सच है। यह एक "खाली" स्ट्रिंग है इसमें है !)।
एक अनंत लूप को रोकने के लिए इन प्रकार के मामलों में अगले मैच की खोज करते समय, regex इंजन और String.replace स्वचालित रूप से अनुक्रमणिका को अग्रेषित करता है।
< एचआर> <एच 3> ए "वास्तविक" रिजक्स समाधान एच>
इसके लिए कोई ज़रूरत नहीं है, लेकिन इसे यहां शैक्षणिक उद्देश्य के लिए दिखाया गया है: ऐसा कुछ भी काम करता है:
सिस्टम Out.println ("string" .replaceAll ("।", "* $ 0")); // "* s * t * r * i * n * g *" यह । के साथ "किसी भी" * और उस वर्ण को, समूह 0 के लिए बैक्रेफ्रेंसिंग करके।
अंतिम वर्ण के लिए तारांकन जोड़ने के लिए, हम । को वैकल्पिक रूप से < कोड>।? । यह काम करता है क्योंकि ? लालची है और यदि संभव हो तो हमेशा एक चरित्र लेता है, अर्थात् कहीं भी लेकिन अंतिम वर्ण।
यदि स्ट्रिंग में न्यूलाइन वर्ण हो सकते हैं, तो पैटर्न का उपयोग करें मोड।
संदर्भ
- और
Comments
Post a Comment