2011-08-18 27 views
5

मेरे पास यह कोड है, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।जावा रेगेक्स मेल नहीं खाता है?

Pattern pattern=Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);"); 
Matcher matcher=pattern.matcher("IMGURSESSION=blahblah; path=/; domain=.imgur.com"); 
System.out.println(matcher.matches()); 

क्या किसी को पता चलेगा क्यों?

+0

regex खुद के साथ गलत कुछ भी नहीं है। यह काम करता था जब मैंने इसे [रेगेक्सबड्डी] (http://www.regexbuddy.com/) के साथ परीक्षण किया। –

+1

मुझे पता है कि। मुझे पता है कि यह काम करेगा, यह जानने के लिए पर्याप्त regex। और RegexBuddy - 40 डॉलर! पागल! मैं बस http://gskinner.com/RegExr/ – Isaac

उत्तर

8

Matcher#matches() विधि पैटर्न के विरुद्ध संपूर्ण इनपुट अनुक्रम से मिलान करने का प्रयास करता है।

Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);.*$"); //true 
Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);"); //false 
+0

एमएम के साथ चिपक गया, पता नहीं था कि यह पूरे अनुक्रम से मेल खाता है, धन्यवाद। – Isaac

1

अपने उद्देश्य मानते हुए निकालने के लिए है IMGURSESSION:

import java.util.regex.*; 

Pattern pattern = Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);.*"); 
Matcher matcher = pattern.matcher("IMGURSESSION=blahblah; path=/; domain=.imgur.com"); 
if (matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

बस सुनिश्चित करें कि आप अंत में सभी पैटर्न एक मैच में डाल "मिलान" अर्थ विज्ञान को संतुष्ट है।

2

मिलान पूरे इनपुट स्ट्रिंग के खिलाफ विधि मिलान।

यदि आप केवल बाद के मैच से मेल खाते हैं तो आप find() विधि का उपयोग कर सकते हैं।

3 अलग अलग तरीकों को एक मिलान के साथ मैच के लिए जावा डॉक्स में समझाया गया है: http://download.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html

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

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