我想在字符串中将所有“%”替换为“%%”。但是,我的字符串也可能有“%{abc}”,这不应该被替换。
输入:我的名字是%{name},我的%得分是%{percentage}%!
输出:我的名字是%{name},我的%%得分是%{percentage} %%!
答案 0 :(得分:5)
您可以使用此正则表达式匹配%
未成功的所有{
s.gsub(/%(?!\{)/, '%%')
修改强>
要防止替换%%
(至%%%%
):
s.gsub(/(?<!%)%(?![{%])/, '%%')
请注意,这样可以防止替换%%%
,以防万一其他行为发生。
来自@MichaelKohl的gsub。 @ZainZafar(OP)提供完整的解决方案。