2010-11-10 13 views
6

मैं जावा में एक regex है:जावा RegEx: बस मिलान समूह का एक हिस्सा मिलता है

Pattern pattern = Pattern.compile(<string>text</string><string>.+</string>); 
Matcher matcher = pattern.matcher(ganzeDatei); 
while (matcher.find()) { 
    String string = matcher.group(); 
    ... 

यह ठीक काम करता है, लेकिन उत्पादन की तरह

<string>text</string><string>Name</string>

लेकिन मैं कुछ है तो बस यह चाहते हैं: Name

मैं यह कैसे कर सकता हूं?

उत्तर

19

कैद पाठ आप तो फिर तुम पाठ कि

matcher.group(1) 
साथ कोष्ठक के बीच मेल नहीं खाते तक पहुँच सकते हैं, कोष्टक में यह लपेटकर द्वारा वापस जाने के लिए तो इस उदाहरण में अपने regex

<string>text</string><string>(.+)</string> 

हो जाना चाहिए चाहते हैं

नो-एर्ग group विधि जिसे आप कॉल कर रहे हैं, इनपुट पैटर्न के पूरे भाग को लौटाता है जो आपके पैटर्न से मेल खाता है, जबकि आप केवल इसके बाद के संस्करण चाहते हैं, जो एक कैप्चरिंग समूह (कोष्ठक) से मेल खाता है।

+0

अरे, आप तेज़ थे (+1) –

+0

आपको बहुत धन्यवाद :) – Tobias

5

तो ऐसा करते हैं:

Pattern pattern = Pattern.compile(<string>text</string><string>(.+)</string>); 
     Matcher matcher = pattern.matcher(ganzeDatei); 
     while (matcher.find()) { 
      String string = matcher.group(1); 
      ... 

संदर्भ:

-2

आपको टेक्स्ट को group() द्वारा ब्रैकेट में प्राप्त करना होगा। तो उपयोग करें:

<string>(.+)</string> 
संबंधित मुद्दे