के साथ एक रेगेक्स में अंतिम चरित्र को कैसे पकड़ें मैं आखिरी जगह को पकड़ने की कोशिश कर रहा हूं और grep का उपयोग करके लाइन पर इसका क्या अनुसरण कर रहा हूं।grep
यह मैं पहले अंतरिक्ष हड़पने:
echo "toto tata titi" | grep -o " .*$"
जावा में मैं गैर लालची ऑपरेटर का इस्तेमाल किया है, लेकिन यह काम करने के लिए प्रतीत नहीं होता:
echo "toto tata titi" | grep -o " .*?$"
यह
लौट कुछ भी नहींअपेक्षित परिणाम titi
है।
आपका रेगेक्स जो मैं करना चाहता था, धन्यवाद। लेकिन क्या आप जानते हैं कि मेरा काम क्यों नहीं करता है? – JPB
@ जीन-फिलिप: क्योंकि रेगेक्स को विषय स्ट्रिंग पर बाएं से दाएं तक लागू किया जाता है, इसलिए यह पहली जगह पर शुरू होता है, धीरे-धीरे अंत तक फैलता है और इस प्रकार सफल होता है। आगे की स्थिति की कोशिश करने की जरूरत नहीं है। –
@ जीन: '/। *? $ /' मैच पहले अंतरिक्ष पाता है और वहां से मिलान शुरू होता है। यह स्ट्रिंग के अंत तक मिलान करता रहता है और किया जाता है। गैर-लालची केवल तब खेलती है जब दुभाषिया को यह तय करना होता है कि वर्तमान इकाई ('.') की तलाश जारी रखना है या इसके बजाय अगले के साथ मिलान करना है या नहीं। यह _not_ बैकट्रैक करता है जब तक कि यह सबसे छोटा समाधान नहीं मिलता है। – Tim