आप सही रास्ते पर हैं। अब आपको केवल वांछित समूह निकालने की जरूरत है, इस प्रकार है:
final Pattern pattern = Pattern.compile("<tag>(.+?)</tag>", Pattern.DOTALL);
final Matcher matcher = pattern.matcher("<tag>String I want to extract</tag>");
matcher.find();
System.out.println(matcher.group(1));
यदि आप कई हिट निकालना चाहते हैं, तो यह प्रयास करें:
public static void main(String[] args) {
final String str = "<tag>apple</tag><b>hello</b><tag>orange</tag><tag>pear</tag>";
System.out.println(Arrays.toString(getTagValues(str).toArray()));
}
private static final Pattern TAG_REGEX = Pattern.compile("<tag>(.+?)</tag>", Pattern.DOTALL);
private static List<String> getTagValues(final String str) {
final List<String> tagValues = new ArrayList<String>();
final Matcher matcher = TAG_REGEX.matcher(str);
while (matcher.find()) {
tagValues.add(matcher.group(1));
}
return tagValues;
}
हालांकि, मैं मानता हूं कि नियमित अभिव्यक्ति यहां सबसे अच्छा जवाब नहीं है। मैं उन तत्वों को खोजने के लिए XPath का उपयोग करूंगा, जिनमें मेरी रुचि है। अधिक जानकारी के लिए Java XPath API देखें ।
[]स्क्वायर ब्रैकेट्स से बचने की जरूरत है जो एक रेगेक्स में मेटाचेचर हैं।