अद्यतन: सभी महान प्रतिक्रियाओं के लिए धन्यवाद! मैंने कई अलग-अलग रेगेक्स पैटर्न की कोशिश की लेकिन मुझे समझ में नहीं आया कि क्यों m.matches() ऐसा नहीं कर रहा था जो मुझे लगता है कि यह करना चाहिए। जब मैंने m.find() पर स्विच किया, साथ ही रेगेक्स पैटर्न को समायोजित करने के लिए, मैं कहीं और प्राप्त करने में सक्षम था।पैटर्न/Matcher समूह()?
मैं (पर्ल के $ & ऑपरेटर) की तरह एक जावा स्ट्रिंग में एक पैटर्न मिलान करने के लिए और उसके बाद निकालने भाग एक regex का उपयोग कर मिलान किया चाहते हैं।
यह मेरा स्रोत स्ट्रिंग है "DTSTART;TZID=America/Mexico_City:20121125T153000
मैं" अमेरिका/मेक्सिको_City "भाग निकालना चाहता हूं।
मैंने सोचा कि मैं पैटर्न और मैचर का उपयोग कर सकता हूं और फिर m.group() का उपयोग करके निकाल सकता हूं लेकिन यह मेरी अपेक्षा के अनुसार काम नहीं कर रहा है। मैंने विभिन्न रेगेक्स तारों के साथ बंदरगाह करने की कोशिश की है और एम.मैट्स() पर हिट होने वाली एकमात्र चीज़ ".*TZID.*"
है जो व्यर्थ है क्योंकि यह पूरी स्ट्रिंग को वापस लौटाती है। क्या कोई मुझे प्रबुद्ध कर सकता है?
Pattern p = Pattern.compile ("TZID*:"); // <- change to "TZID=([^:]*):"
Matcher m = p.matcher (s);
if (m.matches()) // <- change to m.find()
Log.d (TAG, "looking at " + m.group()); // <- change to m.group(1)
एक आईसीएस (iCal) फ़ाइल से एक लाइन की तरह लग रहा है - आप http://ical4j.sourceforge.net/ या समकक्ष क्यों इस्तेमाल नहीं करते? वास्तव में – jrtc27
। मैंने ical4j के साथ शुरुआत की लेकिन आईआईसी फाइल को पार्स करते समय यह एक त्रुटि के साथ फेंक दिया, जिससे इसे हटा दिया गया। अगर मैं डीटीएसटीएआरटी लाइनों को निकालने की तुलना में अधिक कार्यक्षमता की आवश्यकता है तो मैं इसे फिर से कोशिश कर सकता हूं। – wufoo