मेरे पास एक .NET regex है जिसे मैं विंडोज पावरहेल का उपयोग कर परीक्षण कर रहा हूं। उत्पादन इस प्रकार है:गैर लालची रेगेक्स क्वांटिफायर लालची परिणाम देता है
> [System.Text.RegularExpressions.Regex]::Match("aaa aaa bbb", "aaa.*?bbb")
Groups : {aaa aaa bbb}
Success : True
Captures : {aaa aaa bbb}
Index : 0
Length : 11
Value : aaa aaa bbb
मेरे उम्मीद थी कि ?
परिमाणक का उपयोग कर मैच aaa bbb
होने के लिए कारण होगा, के रूप में एक के के दूसरे समूह अभिव्यक्ति को पूरा करने के लिए पर्याप्त है। क्या गैर लालची क्वांटिफायरों की मेरी समझ त्रुटिपूर्ण है, या क्या मैं गलत तरीके से परीक्षण कर रहा हूं?
नोट:
regex: aaa.*?bbb
result: aaa aaa bbb
regex: aaa.*bbb
result: aaa aaa bbb bbb
regex इंजन aaa
की पहली आवृत्ति पाता है और फिर छोड़ देता है तो सभी वर्णों (.*?
): इस स्पष्ट रूप से नहीं के रूप में Regular Expression nongreedy is greedy
मैंने अभी किया जो मैंने पहले किया था, और फ्रेडल के प्रासंगिक अध्याय से परामर्श किया। इससे मुझे 'aaa ((?! Aaa)। * * बीबीबी', जो आपने कहा था उतना ही कम है, सिवाय इसके कि आपके उत्तर में उप-कैप्चरिंग गैर-कैप्चरिंग बनाने और नकारात्मक में बीबीबी के लिए परीक्षण करने के अतिरिक्त विवरण हैं भविष्य का ध्यान करना। अच्छा उत्तर। –