निम्न कोड में:जावा regex - ओवरलैपिंग मैचों
public static void main(String[] args) {
List<String> allMatches = new ArrayList<String>();
Matcher m = Pattern.compile("\\d+\\D+\\d+").matcher("2abc3abc4abc5");
while (m.find()) {
allMatches.add(m.group());
}
String[] res = allMatches.toArray(new String[0]);
System.out.println(Arrays.toString(res));
}
परिणाम है:
[2abc3, 4abc5]
मैं चाहूँगा इसे होने की
[2abc3, 3abc4, 4abc5]
कैसे कर सकते हैं यह हासिल किया जा सकता है?
आपको प्रत्येक इंडेक्स में शुरू करने की आवश्यकता होगी; खोज (int startIndex) विधि का उपयोग करें और प्रत्येक चरित्र स्थिति से शुरू होने वाली खोज करें। बेशक, तो आपको बहुत सारे मैच मिलेंगे ... मान लीजिए कि आप हर नंबर पर शुरू करना चाहते हैं, तो आप सभी मिलान करने वाले इंडेक्स के लिए Matcher.find (String.indexOf (अंक, अनुक्रमणिका)) पर एक पुनरावृत्ति संयोजन का प्रयास कर सकते हैं। – user1676075
मुझे लगता है कि यह एक अंक है, तो आप मैच शुरू करने की स्थिति से बैक अप ले सकते हैं और अगले मैच के लिए वहां से ढूंढ सकते हैं। – user1676075
इनपुट के लिए '" 12abc13abc14abc15 "', आप चाहते हैं '[12abc13, 2abc13, 13abc14, 3abc14, 14abc15, 4abc15]' या '[12abc13, 13abc14, 14abc15]'? – johnchen902