2012-02-20 23 views
13

मेरे एंड्रॉइड प्रोजेक्ट में मेरे पास नियमित अभिव्यक्ति और एक स्ट्रिंग है, जिसमें मुझे मिलान की अभिव्यक्ति होनी चाहिए। समस्या यह है कि, मुझे केवल matches() विधि मिली है, जो बूलियन लौटाती है। क्या कुछ ऐसा है, जो केवल मिलान की गई स्ट्रिंग देता है (उदाहरण के लिए, यदि मेरी स्ट्रिंग "12:00 बजे दुकान पर जाती है", तो मैं यह जांचना चाहता हूं कि इस स्ट्रिंग में कोई समय है (इस उदाहरण में - "12 अपराह्न"), अगर यह है - इसे वापस)? अग्रिम धन्यवाद।एंड्रॉइड नियमित अभिव्यक्ति - वापसी मिलान स्ट्रिंग

उत्तर

29

आपको कैप्चरिंग समूह की आवश्यकता होनी चाहिए। this पढ़ें। आपको अपने प्रश्न का उत्तर मिल जाएगा।
यहां आपके लिए एक साधारण उदाहरण है। मुझे लगता है कि आप इसे समझ लेंगे।

Pattern p = Pattern.compile(".*?(\\d{2}(am|pm)).*"); 
Matcher m = p.matcher("go to the shop at 12pm"); 
if(m.matches()) 
    return m.group(1); 

यह वापस आ जाएगी 12pm
वास्तव में आप क्या आप बेहतर तरीके के साथ चाहते हैं प्राप्त कर सकते हैं।

Pattern p = Pattern.compile("\\d{2}(am|pm)"); 
Matcher m = p.matcher("go to the shop at 12pm"); 
if(m.find()) 
    return m.group(0); //or you can write return m.group(); result will be the same. 
+0

यह वही है जो मुझे चाहिए! बहुत बहुत धन्यवाद, @ एडमैन! – lomza

+0

@ shift66 हाय, क्या आप इस सवाल पर एक नज़र डाल सकते हैं? http://stackoverflow.com/questions/34938232/android-regex-passing-of-text-output-from-method-to-method –

संबंधित मुद्दे