2011-10-13 27 views
7

क्या कोई नियमित अभिव्यक्ति है जो अभिव्यक्ति के सभी उदाहरणों को कैप्चर करेगी, भले ही वे ओवरलैप हों या नहीं?नियमित अभिव्यक्तियों को ओवरलैप करना

उदा। /abc/def/ghi में यदि मैं / से शुरू होने वाले सभी तारों को कैप्चर करना चाहता हूं। Regex (/.*) केवल संपूर्ण स्ट्रिंग देता है, लेकिन मैं इसे /def/ghi और /ghi पर भी मिलान करना चाहता हूं।

+0

दिलचस्प विषय। बस यह सुनिश्चित करने के लिए, बस '/ abc', '/ def' और'/ghi' से मिलान करना वह नहीं है जिसे आप ढूंढ रहे हैं, है ना? – Arjan

+0

@ अर्जुन नहीं, यह नहीं है। वह बहुत ही आसान होगा! –

+1

मुझे लगता है कि '' करता चाल, यह भी देखें [ओवरलैपिंग से मेल खाता है] [1] [1] (= (/.*)?): Http://stackoverflow.com/q/320448/ 653,295 – mousio

उत्तर

8

ज़रूर, एक खाली स्ट्रिंग से मेल खाते हैं और एक नज़र आगे देने के बाद यह है कि एक कैप्चरिंग समूह में /.* कब्जा:

Matcher m = Pattern.compile("(?=(/.*))").matcher("/abc/def/ghi"); 
while(m.find()) { 
    System.out.println(m.group(1)); 
} 

प्रिंट होगा:

/abc/def/ghi 
/def/ghi 
/ghi 
संबंधित मुद्दे