मैं एक पैटर्न जहां इनपुट इस समूह एक या अधिक बार शामिल कर सकते हैं मेल खाने वाले समूह पर कब्जा करना चाहते हैं।Regex: एक या अधिक समूहों कैप्चर करता है, तो मौजूद है (जावा)
उदाहरण:
input = 12361 randomstuff371 12 Mar 16 138more random381 stuff73f
मैं "12 मार्च 16" पर कब्जा करना चाहते हैं।
इस से मैं आसानी से regex का इस्तेमाल किया है:
pattern = (".*(\\d{2}\\s\\w+\\s\\d{2}).*");
हालांकि मेरी परेशानी यह है कि जब इनपुट इन समूहों में से एक से अधिक हो सकते हैं, मैं अनुवर्ती मिलान को पकड़ने में सक्षम नहीं हूँ।
उदाहरण:
input = randomstuff371 12 Mar 16 14 Jan 15 13 Feb 16 138more random381 stuff73f
इस तरह की है कि:
group 1 = 12 Mar 16
group 2 = 14 Jan 15
group 3 = 13 Feb 16
इन समूहों की संख्या से मेल करने के लिए हमेशा अलग-अलग होगा, और इसलिए मैं सोच रहा हूँ अगर वहाँ एक regex कि आदानों से अधिक काम करेगा जिसमें इनमें से 1 या अधिक समूह शामिल हैं। मैंने कोशिश की है:
pattern = (".*(\\d{2}\\s\\w+\\s\\d{2}\\s)+.*"); \\ Not sure about whitespace at the end
हालांकि यह काम नहीं करता है। क्या यह और अधिक है कि मैं इन कब्जे वाले समूहों को कैसे संग्रहीत कर रहा हूं? मैं उन समूहों की संख्या को पूर्व निर्धारित नहीं कर सकता जिनकी मुझे आवश्यकता होगी, खासकर जब रेगेक्स को इनमें से कई इनपुट पर काम करने की आवश्यकता है।
मुझे लगता है कि मैं तारीखों के पूरे सेगमेंट को कैप्चर करने और बाद में matcher.find()
के साथ इसे संभालने के लिए बेहतर हूं, जो मुझे आवश्यक समूहों की संख्या को गिनने के लिए है।
किसी भी मदद की बहुत सराहना की जाएगी।
की वजह से है कि '। *' सामने और वापस। ऐसा मत करो। –
@James, जवाब स्वीकार करने पर विचार कृपया अगर यह आप के लिए काम किया (देखें [कैसे इतना स्वीकार करने के लिए उत्तर] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work))। –