दिलचस्प पोस्ट
एस्पनेट एमवीसी कैसे पीडीएफ बनाने के लिए देखने के लिए शीर्षक से देशी टूलटिप स्टाइल = "टूलटिप पाठ" मैं JSON प्रोग्राम को कैसे सुशोभित कर सकता हूं? मैं आरजीएल का नवीनतम संस्करण कैसे स्थापित करूं? पीपी 5 में इनलाइन स्ट्रिंग्स बनाम कंसैटनेशन का उपयोग करने में गति अंतर? कैसे जानती है कि .keyup () एक कैरेक्टर कुंजी है (jQuery) अजगर की सूची कैसे कार्यान्वित है? कस्टम ड्राइंग के लिए पेंट इवेंट हैंडलर की बजाय CreateGraphics का उपयोग करते समय आरेखण अवक्षेप आर में पढ़ने के लिए एक विशाल (3.5 जीबी) सीएसवी फ़ाइल ट्रिम कर रहा है एक्सआई: स्कीमा स्थान का उपयोग क्या है? asp.net mvc3 रेजर प्रलेखन? मुझे एक बड़ी सी ++ प्रोजेक्ट में अनावश्यक # फाइलों को कैसे शामिल करना चाहिए? कोणीय – एनजी-स्विच एनजी-मॉडल बाँध नहीं करता है Google नक्शे v2 Android में मार्कर से स्क्रीन निर्देशांक कैसे प्राप्त करें बाहरी वेबसाइट से शीर्षक और मेटा टैग प्राप्त करना

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

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

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

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

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

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

धन्यवाद।

वेब के समाधान से एकत्रित समाधान "जावा में उम्मीद के रूप में यह 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("#.*")