0

我对正则表达式真的很陌生。我有以下网址:http://www.foo.bar.com/hgur_300x300.jpghttp://www.foo.bar.com/hgur_100x100.jpg

我如何在 rails 中使用带有正则表达式的 gsub 来查找 [300X300.jpg AND 180X180.jpg] 并将其替换为 500X500?

4

3 回答 3

1
"http://www.foo.bar.com/hgur_100x100.jpg".gsub(/\d+/, "500")

将两个“100”替换为“500”

更新:

"http://www.foo.bar.com/hgur_100x100.jpg".gsub(/\d+x\d+/, "500x500")

会更精确

于 2012-07-26T08:15:31.710 回答
0

请不要在整个 URL 上使用正则表达式。URL 应该是统一的,表达式很容易破坏它们。您应该先将路径与其余部分分开,然后再进行一些严格的表达。

此代码将使用 Rubysuri库进行解析,然后直接修改路径。

uri = URI.parse("http://www.foo.bar.com/hgur_300x300.jpg")
uri.path #=> "/hgur_300x300.jpg"
uri.path.gsub!(/\d{3}/, '500')
uri.to_s #=> "http://www.foo.bar.com/hgur_500x500.jpg"
于 2012-07-26T08:17:16.527 回答
0

我建议使用以下方法。

如果您的 URL 是纯字符串,则只需"my_url.com/hgur_100x100.jpg".gsub(/\d+x\d+/,"500x500").

这将匹配“100x100”,您将其替换为“500x500”

我建议这样做是因为如果你只匹配 using \d+/,你最终会匹配 URL 中的所有数字,包括端口号。

@injekt 的使用方法URI.path非常好。我一直在使用 URI,我认为它是一个非常可靠的模块。但这在很大程度上取决于您首先拥有格式良好的 URI。例如,如果您输入一个 URL(例如,手动键入一个www.mydomain.com/image333.png没有 的URL scheme,则pathandhost也将是未定义的。

于 2012-07-26T08:22:09.567 回答