Pattern.quote(String s)आप क्या चाहते हैं की तरह है। हालाँकि यह वांछित होने के लिए थोड़ा बचा है; यह वास्तव में व्यक्तिगत पात्रों से नहीं बचता है, बस स्ट्रिंग को लपेटता है \Q...\E।
ऐसी कोई विधि नहीं है जो ठीक वही है जो आप खोज रहे हैं, लेकिन अच्छी खबर यह है कि वास्तव में जावा नियमित अभिव्यक्ति में सभी विशेष वर्णों से बचने के लिए यह काफी सरल है:
regex.replaceAll("[\\W]", "\\\\$0")
यह काम क्यों करता है? खैर, प्रलेखन के लिए Patternविशेष रूप से कहते हैं कि गैर-वर्णनात्मक वर्णों से बचने के लिए इसकी अनुमति है जो जरूरी नहीं कि बच जाना चाहिए:
किसी अक्षरात्मक चरित्र से पहले बैकस्लैश का उपयोग करना एक त्रुटि है जो एक बच गए निर्माण को निरूपित नहीं करता है; ये नियमित-अभिव्यक्ति भाषा के लिए भविष्य के एक्सटेंशन के लिए आरक्षित हैं। एक गैर-वर्णनात्मक चरित्र से पहले एक बैकस्लैश का उपयोग किया जा सकता है, भले ही वह चरित्र एक गैर-निर्मित निर्माण का हिस्सा हो।
उदाहरण के लिए, ;एक नियमित अभिव्यक्ति में एक विशेष चरित्र नहीं है। हालाँकि, यदि आप इसे छोड़ देते हैं, तब Patternभी व्याख्या \;करेंगे ;। यहाँ कुछ और उदाहरण दिए गए हैं:
>के \>बराबर हो जाता है>
[बन जाता है \[जो बच गया रूप है[
8अभी भी है 8।
\)वह बन जाता है, \\\)जिसका संक्षिप्त रूप \और (संक्षिप्त रूप होता है।
नोट: कुंजी "गैर-अल्फाबेटिक" की परिभाषा है, जिसका दस्तावेज़ीकरण वास्तव में "गैर- शब्द " वर्ण या वर्ण सेट के बाहर वर्ण का अर्थ है [a-zA-Z_0-9]।