यहां समस्या है: उपयोगकर्ता को टेक्स्ट फ़ील्ड प्रस्तुत किया जाता है, जिसके लिए वह फ़िल्टर टाइप कर सकता है । Unfiltered डेटा फ़िल्टर करने के लिए एक फ़िल्टर। उपयोगकर्ता, ओरेकल फॉर्म मस्तिष्कविश का अनुभव कर रहा है, एक्स्पेट्स% के अलावा कोई विशेष वर्ण नहीं है, जो मुझे लगता है कि जावा में "। *" Regex के लिए कम या ज्यादा खड़ा है।सभी रेगेक्स विशेष वर्णों से कैसे बचें, लेकिन सभी एक बार (Pattern.quote() द्वारा), केवल एक-एक करके
उपयोगकर्ता व्यक्ति अच्छी तरह व्यवहार किया जाता है, यह देखते हुए व्यक्ति "CTHULH%" की तरह सामान, जिस स्थिति में मैं एक पैटर्न का निर्माण हो सकता है टाइप करेगा:
Pattern.compile(inputText.replaceAll("%", ".*"));
लेकिन अगर उपयोगकर्ता व्यक्ति Innsmouth की निवासी है, insurmountably होगा वह टाइप "+ \ [एक - # $%^& * (।" कुछ सरल कीस्ट्रोक्स के साथ मेरी योजना को नष्ट यह काम नहीं करेगा:
Pattern.compile(Pattern.quote(inputText).replaceAll("%", ".*"));
के रूप में यह शुरुआत और \ ई पर \ क्यू डाल देंगे। स्ट्रिंग के अंत में, मेरा% ->। * स्विच moot प्रस्तुत करना।
सवाल यह है: क्या मुझे पैटर्न कोड में हर विशेष चरित्र को देखना है और आगे "\\" जोड़कर इसे स्वयं से बचाना है, या यह स्वचालित रूप से किया जा सकता है? या क्या मैं समस्या में इतना गहरा हूं, मैं संकल्प के कुछ स्पष्ट तरीके को छोड़ रहा हूं?
+1 लेकिन मुझे यकीन नहीं है कि 'उद्धरण विधि विधि * के लिए प्रलेखन * गारंटी देता है कि एक स्ट्रिंग हमेशा \ \ Q' और' \ E' से घिरा होगा (यह केवल "यह विधि एक स्ट्रिंग उत्पन्न करती है जो कर सकती है एक पैटर्न बनाने के लिए इस्तेमाल किया जाए जो स्ट्रिंग से मेल खाता है जैसे कि यह एक शाब्दिक पैटर्न था। ")। हालांकि प्रैक्टिस में मुझे लगता है कि जावा के वर्तमान में मौजूदा सभी विकृतियां इसे प्राप्त करने के लिए '\ Q ... \ E' दृष्टिकोण का उपयोग करती हैं। –
@ थॉमस ने नौसिखिया प्रश्न से बहाना - यहां कस्टम क्या है? जब आप उत्तर अपडेट करते हैं तो क्या मैं अपनी टिप्पणियां हटा सकता हूं? –
@pafauk। हम्म, मुझे यकीन नहीं है, लेकिन अगर टिप्पणियां कोई अतिरिक्त जानकारी प्रदान नहीं करती हैं (जो मुझे लगता है कि अब हमारी टिप्पणियों के बारे में सच है), तो मैं उन्हें पद को स्पष्ट रखने के लिए हटा दूंगा। मैं अपनी पिछली टिप्पणियां शुरू और हटा दूंगा। – Thomas