Ruby regex:从字符串中提取url列表
我有一串图像的URL,我需要将其转换为数组。
http://rubular.com/r/E2a5v2hYnJ
我该怎么做呢?
最佳答案很大程度上取决于您期望的输入字符串。
如果您的测试字符串是准确的,那么我不会使用正则表达式,而是执行此操作(如Marnen Laibow-Koser所建议的那样):
mystring.split('?v=3')
如果你的有用字符串之间真的没有持续的松散,那么正则表达式可能会更好。 你的正则表达式是贪婪的。 这会让你分道扬::
mystring.scan(/https?:\/\/[\w.-\/]*?\.(jpe?g|gif|png)/)
注意’?’ 在捕获服务器的部分中的’*’和URL的路径段之后,这使得正则表达式不贪婪。
这样做的问题是,如果您的服务器名称或路径包含.jpg,.jpeg,.gif或.png中的任何一个,那么该实例中的结果将是错误的。
确定哪些是最好的需要有关输入字符串的更多信息。 例如,您可以更好地模拟匹配所需URL之间的绒毛。
URI.extract(your_string)
如果你已经把它放在一个字符串中,这就是你所需要的。 我不记得了,但你可能不得不先把require 'uri'
放在那里。 一定要喜欢那个标准的图书馆!
这是docs URI#extract的链接
Scan
返回一个数组
myarray = mystring.scan(/regex/)
请参阅regular-expressions.info
使用String#split
(有关详细信息,请参阅文档)。
问题的一部分是rubular你使用https而不是http ..如果其他答案不适合你,这会让你更接近你想要的: