簡體   English   中英

Ruby 正則表達式:從字符串中提取 url 列表

[英]Ruby regex: extract a list of urls from a string

我有一串圖像的 URL,我需要將其轉換為數組。

http://rubular.com/r/E2a5v2hYnJ

我該怎么做呢?

URI.extract(your_string)

如果您已經將它放在字符串中,這就是您所需要的。 我不記得了,但你可能必須先把require 'uri'放在那里。 一定要喜歡那個標准庫!

這是文檔URI#extract的鏈接

Scan返回一個數組

myarray = mystring.scan(/regex/)

請參閱此處的正則表達式.info

使用String#split (有關詳細信息,請參閱文檔)。

最佳答案在很大程度上取決於您所期望的輸入字符串。

如果您的測試字符串是准確的,那么我不會使用正則表達式,而是這樣做(如 Marnen Laibow-Koser 所建議):

mystring.split('?v=3')

如果您的有用字符串之間確實沒有持續的絨毛,那么正則表達式可能會更好。 你的正則表達式是貪婪的。 這會讓你分道揚鑣:

mystring.scan(/https?:\/\/[\w.-\/]*?\.(jpe?g|gif|png)/)

注意“?” 在捕獲 URL 的服務器和路徑片段的部分中的“*”之后,這使得正則表達式不貪婪。

這樣做的問題是,如果您的服務器名稱或路徑包含任何.jpg、.jpeg、.gif 或.png,那么在該實例中結果將是錯誤的。

弄清楚什么是最好的需要有關您的輸入字符串的更多信息。 例如,您可能會發現更好地模式匹配所需 URL 之間的絨毛。

部分問題在於您使用的是 https 而不是 http .. 如果其他答案對您不起作用,這將使您更接近您想要的:

http://rubular.com/r/cIjmjxIfz5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM