对不起我是regex的新手所以请原谅我。我有几个字符串,如
"mso-table-lspace:0;mso-table-rspace:0;margin:0;padding:0;background: url(http://someurl/lib/id/w/download_bg.jpg) no-repeat top left #f9f9f9; text-align:center;"
"font-size: 3px; line-height: 3px;"
我想首先检查字符串是否包含图片网址(包含https?和.png或.jpeg或.jpg),如果存在于字符串中,则将其替换为不同的网址。
因此对于第一个字符串,输出应为
"mso-table-lspace:0;mso-table-rspace:0;margin:0;padding:0;background: url(http://someotherurl/lib/id/w/download_bg.jpg) no-repeat top left #f9f9f9; text-align:center;"
答案 0 :(得分:1)
你可以试试下面的gsub命令,
gsub(/^(.*?https?:\/\/)([^\/]*)(.*?(?:\.png|\.jpeg|\.jpg))/, '\1someotherurl\3')
<强>代码:强>
> IO.write("/path/to/the/file", File.open("/path/to/the/file") {|f| f.read.gsub(/^(.*?https?:\/\/)([^\/]*)(.*?(?:\.png|\.jpeg|\.jpg))/, '\1someotherurl\3')})
=> 201
示例:强>
irb(main):006:0> "mso-table-lspace:0;mso-table-rspace:0;margin:0;padding:0;background: url(http://someurl/lib/id/w/download_bg.jpg) no-repeat top left #f9f9f9; text-align:center;".gsub(/^(.*?https?:\/\/)([^\/]*)(.*?(?:\.png|\.jpeg|\.jpg))/, '\1someotherurl\3')
=> "mso-table-lspace:0;mso-table-rspace:0;margin:0;padding:0;background: url(http://someotherurl/lib/id/w/download_bg.jpg) no-repeat top left #f9f9f9; text-align:center;"
答案 1 :(得分:1)
由于你的输入是CSS,我认为假设你正在寻找这种形式的东西是非常安全的
url(<http or https>://<some url>/<some path>.<image extension>)
为此,可以使用简化的正则表达式(不需要实际尝试匹配URL的复杂正则表达式,并且可能非常重要):
text.gsub(%r{(url\(https?://)[^/]+/([^\)]+\.(png|jpeg|jpg))\)}, '\1someotherurl/\2')
# => "mso-table-lspace:0;mso-table-rspace:0;margin:0;padding:0;
# background: url(http://someotherurl/lib/id/w/download_bg.jpg no-repeat
# top left #f9f9f9; text-align:center;"
答案 2 :(得分:0)
(?=.*?(?:http|https):\/\/.*\/.*?\.(?:jpg|png|jpeg).*)(.*?)https?:\/\/.*\/.*?\)(.*)
试试这个。这适用于所有情况。
参见演示。
答案 3 :(得分:-1)
它可以通过多种方式完成,一个简单的例子
a = "mso-table-lspace:0;mso-table-rspace:0;margin:0;padding:0;background: url(http://someurl/lib/id/w/download_bg.jpg) no-repeat top left #f9f9f9; text-align:center;"
现在,
a.gsub(a.scan(/http(.*?)(jpg|png)/)[0][0],"://someother-url") if a.scan(/http(.*?)(jpg|png)/).size > 0
# => "mso-table-lspace:0;mso-table-rspace:0;margin:0;padding:0;background: url(http://someother-urljpg) no-repeat top left #f9f9f9; text-align:center;"