जवाबों:
यदि आप चाहते हैं कि डॉट्स या अन्य वर्ण रीगेक्स में एक विशेष अर्थ के साथ एक सामान्य चरित्र हो, तो आपको इसे बैकस्लैश से बचना होगा। चूंकि जावा में रेग्जेस सामान्य जावा स्ट्रिंग्स हैं, इसलिए आपको बैकस्लैश से खुद को बचाना होगा, इसलिए आपको दो बैकलैश की जरूरत है जैसे\\.
अन्य सदस्यों द्वारा प्रस्तावित समाधान मेरे लिए काम नहीं करते हैं।
लेकिन मैंने यह पाया:
जावा regexp लिखने में एक डॉट से बचने के लिए [.]
\\.मेरे लिए काम नहीं करता था: \.शिकायत की गई कि .बच निकलने की जरूरत नहीं है, \\.ऐसा लगता है कि यह \.इसके बजाय था ., \\\.और बिल्डर ने एक त्रुटि फेंक दी, [.]केवल एक चीज थी जिसने काम किया।
\\.एक स्ट्रिंग शाब्दिक के अंदर आपको देता \.है जो कि रेगेक्स को किसी भी चरित्र के मिलानकर्ता के बजाय डॉट को शाब्दिक बिंदु के रूप में देखना होगा।
पर्ल-स्टाइल रेग्युलर एक्सप्रेशंस (जो जावा रेगेक्स इंजन कम या ज्यादा आधारित है) निम्न वर्णों को विशेष वर्ण मानते हैं:
.^$|*+?()[{\चरित्र वर्गों के बाहर विशेष अर्थ है ,
]^-\चरित्र वर्गों के अंदर विशेष अर्थ है ( [...])।
इसलिए आपको संदर्भ के आधार पर उन (और केवल उन) प्रतीकों से बचने की जरूरत है (या, चरित्र वर्गों के मामले में, उन्हें उन स्थितियों में रखें जहां उन्हें गलत तरीके से समझा नहीं जा सकता है)।
अनावश्यक रूप से अन्य वर्णों से बचकर काम हो सकता है, लेकिन कुछ रेगेक्स इंजन इसे सिंटैक्स त्रुटियों के रूप में मानेंगे, उदाहरण के लिए \_.NET में त्रुटि का कारण होगा।
कुछ अन्य लोग गलत परिणाम देंगे, उदाहरण के लिए पर्ल में \<शाब्दिक रूप में व्याख्या की गई है <, लेकिन egrepइसका अर्थ है "शब्द सीमा"।
तो -?\d+\.\d+\$मैच के लिए लिखें 1.50$, -2.00$आदि और [(){}[\]]एक चरित्र वर्ग के लिए जो सभी प्रकार के कोष्ठक / ब्रेसिज़ / कोष्ठक से मेल खाता है।
यदि आपको एक उपयोगकर्ता इनपुट स्ट्रिंग को रेगेक्स-सुरक्षित रूप में बदलने की आवश्यकता है, तो उपयोग करें java.util.regex.Pattern.quote।
आगे पढ़े: जान गोएर्ट के ब्लॉग रेगेक्सगुरु पर मेटाचेटर्स से बचते हुए
एक बैकस्लैश के साथ विशेष वर्णों से बच। \., \*, \+, \\d, और पर इतना। यदि आप अनिश्चित हैं, तो आप किसी भी गैर-वर्णानुक्रमिक चरित्र से बच सकते हैं चाहे वह विशेष हो या न हो। अधिक जानकारी के लिए java.util.regex.Pattern के लिए javadoc देखें ।
यहाँ कोड है जिसे आप सीधे कॉपी पेस्ट कर सकते हैं:
String imageName = "picture1.jpg";
String [] imageNameArray = imageName.split("\\.");
for(int i =0; i< imageNameArray.length ; i++)
{
system.out.println(imageNameArray[i]);
}
और क्या होगा अगर गलती से पहले या बाद में रिक्त स्थान छूट गए हैं "।" ऐसे मामलो मे? उन स्थानों पर भी विचार करना हमेशा सबसे अच्छा अभ्यास है।
String imageName = "picture1 . jpg";
String [] imageNameArray = imageName.split("\\s*.\\s*");
for(int i =0; i< imageNameArray.length ; i++)
{
system.out.println(imageNameArray[i]);
}
यहाँ, रिक्त स्थान पर विचार करने के लिए \\ s * है और आपको केवल आवश्यक विभाजन प्रदान करना है।
मैं एक स्ट्रिंग से मेल खाना चाहता था जो "। *" के साथ समाप्त हो। इसके लिए मुझे निम्नलिखित का उपयोग करना था:
"^.*\\.\\*$"
अगर आप इसके बारे में सोचते हैं तो Kinda मूर्खतापूर्ण: D Heres इसका क्या मतलब है। स्ट्रिंग की शुरुआत में कोई भी चरित्र शून्य या उससे अधिक बार हो सकता है जिसके बाद एक बिंदु होता है "।" एक स्टार (*) के बाद स्ट्रिंग के अंत में।
मुझे उम्मीद है कि यह किसी के लिए काम आता है। फेबियन को बैकस्लैश चीज़ के लिए धन्यवाद।
"\\.\\*$"तब का उपयोग करें । यदि यह आपके लिए महत्वपूर्ण नहीं है तो स्ट्रिंग की शुरुआत के लिए मिलान करने की आवश्यकता नहीं है।
यदि आप यह जांचना चाहते हैं कि आपकी सजा "" समाप्त होती है या नहीं, तो आपको अपने पैटर्न के अंत में [\ _। ] $ जोड़ना होगा ।