दिलचस्प पोस्ट
आईआईएस 7 एपलीकेशन पूल में नेट फ्रेमवर्क 4.5 संस्करण कैसे सेट करें I उद्देश्य सी: मॉड्यूलो पूर्वाग्रह हेज़वेल पर केवल 3 चक्र क्यों लेता है, एग्नेर के निर्देश तालिकाओं से अलग है? एक सीएमडी या बैट मूक मोड में चलाना कैसे पता लगाएंगे कि मशीन डोमेन से जुड़ा हुआ है (सी # में)? सी # विंडोज फॉर्म एप्लीकेशन – जीयूआई को दूसरे थ्रेड और क्लास से अपडेट करना है? मैं सी में तारों की एक सरणी कैसे बनाऊं? Log4net समस्याओं को कैसे ट्रैक करें डेटाबेस में निकटतम संख्यात्मक मान ढूंढें सी # में प्रॉक्सी मूलभूत प्रमाणीकरण: HTTP 407 त्रुटि जावास्क्रिप्ट: ऑब्जेक्ट्स के लिए फ़िल्टर () स्ट्रिंग विद कॉमन्स एक्ज़िक के रूप में कमांड के आउटपुट को कैप्चर कैसे कर सकता हूं? जावा में स्ट्रिंग सरणी रूपांतरण के लिए स्ट्रिंग डीजेन्गा ने पोस्ट_एसएवी संकेत से कई सारे कई क्षेत्रों तक पहुंचा स्ट्रिंग को मेमोरी कैसे बचाता है?

जावा में उम्मीद के रूप में यह regex काम क्यों नहीं करता है?

तुच्छ रेगेक्स प्रश्न (उत्तर सबसे ज्यादा जावा-विशिष्ट है):

"#This is a comment in a file".matches("^#") 

यह झूठी वापसी देता है जहाँ तक मैं देख सकता हूं, ^ अर्थ है कि इसका हमेशा मतलब क्या है और # का कोई विशेष अर्थ नहीं है, इसलिए मैं स्ट्रिंग की शुरुआत में ^# जैसा "ए" ^# अनुवाद करता हूं। जो मैच होना चाहिए। और ऐसा पर्ल में होता है:

 perl -e "print '#This is a comment'=~/^#/;" 

प्रिंट "1" इसलिए मुझे पूरा यकीन है कि जवाब कुछ जावा विशिष्ट है क्या कोई मुझे रोशन कर सकता है?

धन्यवाद।

Solutions Collecting From Web of "जावा में उम्मीद के रूप में यह regex काम क्यों नहीं करता है?"

Matcher.matches() लिए कि क्या पूरे इनपुट स्ट्रिंग को regex से मिलान किया गया है।

चूंकि आपका regex केवल बहुत ही प्रथम वर्ण से मेल खाता है, इसलिए वह false वापसी करता false

आप इसके बजाय Matcher.find() का उपयोग करना चाहेंगे।

दी, कंक्रीट विनिर्देश को खोजने के लिए थोड़ा मुश्किल हो सकता है, लेकिन यह वहां है:

  • String.matches() को Pattern.matches(regex, str) रूप में एक ही चीज़ के रूप में परिभाषित किया जाता है।
  • Pattern.matches() बदले में Pattern.compile(regex).matcher(input).matches() रूप में परिभाषित किया गया है। Pattern.compile(regex).matcher(input).matches()
    • Pattern.compile() एक Pattern देता है
    • Pattern.matcher() एक Matcher देता है
  • Matcher.matches() इस (जोर खान) की तरह प्रलेखित है:

    पैटर्न के खिलाफ पूरे क्षेत्र से मेल खाने का प्रयास

matches विधि पूरे स्ट्रिंग के विरुद्ध आपके रेगेक्स से मेल खाती है।

तो जोड़ने के प्रयास करें .* स्ट्रिंग के बाकी मैच के लिए।

 "#This is a comment in a file".matches("^#.*") 

जो true रिटर्न कोई भी regex से सभी एंकर (शुरू और अंत दोनों) को छोड़ सकता है और match विधि यह हमारे लिए जोड़ देगा। इसलिए उपरोक्त मामले में हम "#.*" रूप में भी इस्तेमाल कर सकते थे।

यह आपकी उम्मीदों को पूरा करना चाहिए:

 "#This is a comment in a file".matches("^#.*$") 

अब इनपुट स्ट्रिंग पैटर्न से मेल खाता है "प्रथम वर्ण # हो जाएगा, बाकी कोई भी चार होगा"


Joachims टिप्पणी के बाद, निम्नलिखित बराबर है:

 "#This is a comment in a file".matches("#.*")