是否有一个gsub替代ruby可以在每次匹配时运行一个方法?

Sai*_*fis 3 ruby regex gsub

我需要运行一个脚本来重写html文件的文件夹路径,会有很多匹配,并且需要计算替换字符串,类似于

"Html string".gsub( /images/([a-zA-Z0-9\-]+)/, "/images/#{replacement_method($1)}/" )
Run Code Online (Sandbox Code Playgroud)

唯一的问题是gsub,至少据我所知,只运行一次replacement_method(),我需要它每次运行,因为文件夹字符串发生了所需的替换字符串更改.

有没有办法让这个工作与gsub?喜欢wordpress中的替换功能?任何其他现实的方法?

Sir*_*ius 11

你必须使用一个块:

"Html string".gsub( /images/(folder)/) { |match| "/images/#{replacement_method(match)}/" }
Run Code Online (Sandbox Code Playgroud)

将为字符串中的每个匹配调用该块.