我有一個紅寶石應用解析來自串一串網址:正則表達式在「http://」之前刪除文本?
@text = "a string with a url http://example.com"
@text.split.grep(/http[s]?:\/\/\w/)
@text[0] = "http://example.com"
這工作得很好^^
但有時網址的HTTP前文://例如
有沒有一個正則表達式可以選擇字符串中的「http://」之前的文本,這樣我就可以去掉它了?
我有一個紅寶石應用解析來自串一串網址:正則表達式在「http://」之前刪除文本?
@text = "a string with a url http://example.com"
@text.split.grep(/http[s]?:\/\/\w/)
@text[0] = "http://example.com"
這工作得很好^^
但有時網址的HTTP前文://例如
有沒有一個正則表達式可以選擇字符串中的「http://」之前的文本,這樣我就可以去掉它了?
劈裂然後grepping爲奇數的方式做這個。你爲什麼不只是使用String#scan:
@text = "a string with a url http://example.com"
urls = @text.scan(/http[s]?:\/\/\S+/)
url[0] # => "http://example.com"
.*(?=http://)
或者你可以將兩者結合起來。
.*(?=(f|ht)tp[s]://)
只要搜索HTTP://,然後在此之前,除去該字符串的部分(作爲=〜返回偏移到字符串)
也許一個更好的方式來達到同樣的效果是使用URI標準庫。
require 'uri'
text = "a string with a url http://example.com and another URL here:http://2.example.com and this here"
URI.extract(text, ['http', 'https'])
# => ["http://example.com", "http://2.example.com"]
文檔:URI.extract
擡起頭,你將有同樣的問題在網址的結尾太,這將是更加艱難應對。 – JohnFx 2009-07-30 16:04:26
是的,我同意JohnFx。正則表達式對於這個問題不是很好。之前在SO上已經詢問了匹配字符串中的URL。看看他們使用什麼解決方案 - 即什麼庫等。 – Pod 2009-07-30 16:07:04