एक आलसी परिमाणक का उपयोग करें:
(\w+?)(sin|in|pak|red)$
^
देखें regex demo
\w+
एक लालची परिमाणक कि शामिल हैं: 1) के रूप में कई वर्ण पकड़ लेता है के रूप में यह कर सकते हैं (और यह मिलान कर सकते हैं ध्यान दें s
, i
, सभी अक्षरों, अंक और अंडरस्कोर) और फिर बैकट्रैक (बाद में बाएं से दूसरे स्थानांतरित होने के बाद एक char उत्पन्न करना), बाद के पैटर्न के लिए समायोजित करने का प्रयास कर रहा है। चूंकि in
पहले पाया जाता है, यह मिलान किया जाता है, और पूरे समूह को मिलान माना जाता है, रेगेक्स $
के साथ स्ट्रिंग के अंत की जांच करने के लिए चला जाता है। एक आलसी क्वांटिफ़ायर में रेगेक्स इंजन 0 शब्द 3512 से मेल खाने के बाद \w+?
छोड़ देगा, और अन्य पैटर्न की कोशिश की जाएगी, बाएं से दाएं चलती है। वही स्थानापन्न
या
\B(?:sin|in|pak|red)$
tak
स्थानापन्न के रूप में साथ
साथ
(\w)(?:sin|in|pak|red)$
:
स्रोत
2016-11-28 13:37:25
स्पष्टीकरण के लिए धन्यवाद! कुछ मिनटों में उत्तर स्वीकार करेंगे – Cornwell
लालची क्वांटिफायर का कारण * बैकट्रैकिंग * - यानी, बाद के पैटर्न सही स्थानों पर पाए जाते हैं।आलसी क्वांटफायर उप-पैटर्न * विस्तार * (एक रिवर्स बैकट्रैकिंग) का कारण बनते हैं और बाद के उप-पटरियां बाएं स्थानों पर पाए जाते हैं। यह कहना उचित नहीं है कि आलसी या लालची क्वांटिफायर पैटर्न मिलान के क्रम को परिभाषित करते हैं, लेकिन ऐसा लगता है कि ऐसा ही था। –
@ कॉर्नवेल आलसी का मतलब है कि यह 'इन' से मेल खाने के बाद मिलान करना बंद नहीं करेगा, लेकिन जांच जारी रखेगा जिसका अर्थ है कि यह अंततः 'पाप' से मेल खाता है। यह केवल 'इन' से मेल खाएगा यदि यह एक सटीक मैच है, यानी – bixarrio