在字符串中匹配isloated%所需的正则表达式

Zai*_*far 1 ruby regex string

我想在我的字符串中用"%%"替换所有"%".但是,我的字符串也可能有"%{abc}",这不应该被替换.

输入:我的名字是%{name},我的%得分是%{percentage}%!

输出:我的名字是%{name},我的%%得分是%{percentage} %%!

nha*_*tdh 5

您可以使用此正则表达式匹配所有%未成功的正则表达式{

s.gsub(/%(?!\{)/, '%%')
Run Code Online (Sandbox Code Playgroud)

编辑

为防止更换%%(至%%%%):

s.gsub(/(?<!%)%(?![{%])/, '%%')
Run Code Online (Sandbox Code Playgroud)

请注意,这将阻止替换%%%,以防万一其他行为被预期.

感谢@MichaelKohl为gsub.@ZainZafar(OP)提供完整的解决方案.