我有一個.net正則表達式,我正在使用Windows Powershell進行測試。輸出如下:非貪婪的正則表達式給出了貪婪的結果
> [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
,作爲一個的第二組是足以滿足的表達。我對非貪婪量詞是否有缺陷有所瞭解,還是我的測試不正確?
注:這顯然是不一樣的問題,因爲Regular Expression nongreedy is greedy
我剛剛做了我應該做的第一件事,並諮詢了Friedl的相關章節。這導致我成爲'aaa((!!aaa)。)* bbb',這與你所說的差不多,除了你的答案有添加的細節使得子表達式無法捕獲並且還測試了bbb中的負數展望。很好的答案。 –