[英]Greedy vs Non-Greedy in Perl Regex
這是我要在其上執行正則表達式的文本行:
"MATS"?"Base Revenue Element"?#Mi?#Mi
這是我的正則表達式:
s/\?[^"]/FOUND/;
我希望得到:
"MATS"?"Base Revenue Element"?FOUNDMi?FOUNDMi
但是我得到了:
"MATS"?"Base Revenue Element"?FOUNDMi?#Mi
所以我將其切換為:
s/\?[^"]?/FOUND/;
但是現在我得到:
"MATS"FOUND"Base Revenue Element"?#Mi?#Mi
所以:
因為s///
默認情況下僅做一次替換。 您可以使用g
修飾符使它盡可能多地執行: s/\\?[^"]/FOUND/g;
因為?
不是原子后面的“非貪婪修飾語”,而是“零或一個”量詞。 \\?[^"]?
匹配問號( 可選)后跟非引號字符;如果后面跟引號,則僅匹配“?”。貪婪實際上與這里發生的事情無關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.