以下是我正在尝试执行正则表达式的文本行:
"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
所以:
答案 0 :(得分:3)
因为s///
默认只进行一次替换。您可以使用g
修饰符尽可能多地执行此操作:s/\?[^"]/FOUND/g;
因为?
不是"非贪婪的修饰符"跟随一个原子,它是"零或一个"量词。 \?[^"]?
匹配问号(可选),后跟非引号字符;它会匹配"?"如果它后面跟一个报价单独。贪婪实际上与这里发生的事情毫无关系。