Ruby将img src https替换为http

时间:2016-01-13 16:17:00

标签: ruby-on-rails ruby regex

如何将图像源中的所有https字符串替换为http

<img src="https
<img src='https
<img title="title" src="https

由于这种类型的组合

"text <img src='https://image.com/img.jpg' /> text".gsub('<img src="https', '<img src="http')

会让https取消替代。

gsub('https', 'http')

不好,因为我不想替换链接,例如。

2 个答案:

答案 0 :(得分:2)

使用正则表达式而不是字符串:

mystring = "text <img src='https://image.com/img.jpg' /> text"

mystring.gsub(/\<img src=("|')https.+("|')/){|match| match.gsub('https','http')}
=> "text <img src='http://image.com/img.jpg' /> text"

答案 1 :(得分:1)

如果图片代码只包含<img src="">(无属性),则可以使用以下代码:

<img.*?src=('|")((?!https)[^"']+)\1
# look for an image tag literally
# look for src=" or src='
# assure that it is no https (negative lookahead)
# capture everything up to the previously captured delimiter (quote/double quote)

需要更换这些字符串。

请参阅https://regex101.com/r/nA4yX4/1