2012-12-15 66 views
1

我意識到這個問題已經在堆棧溢出和網絡上多次提出,事實上,我現在已經打開了大約20個標籤,並且明顯地解決了這個問題。如何從字符串中提取網址? (任何語言)

的事情是每一個答案說沿着

線的東西你可以使用正則表達式,但它不是一個好主意,不正常,但我將不會提供任何替代品。

所以我的問題是這樣的 - 難道真的沒有可靠,明確的方式,我們可以從文本中提取網址嗎?

+0

沒有其他優雅的解決方案比正則表達式..... –

回答

2

正則表達式是非常強大的工具。像大多數強大的工具一樣,它們被嚴重誤解,在許多用戶的手中是危險的,並且是某些任務的最佳答案。在字符串中匹配已知模式是它們存在的。一旦你手上有一個好的URL模式,它就會一直在其設計的上下文中工作。每個人都避開使用它的原因是,爲特定的上下文創建一個好的URL模式是很困難的工作。的圖案將通過所述執行環境(例如,操作系統file: URL)的變化,由編程語言和/或庫,在使用中,

對於HTTP URL的特定情況下,存在一個clear definition這是主要的堅持,你可以用它幾乎任何語言或圖書館建立一個可靠的正則表達式。

0

確實沒有可靠的,明確的方式,我們可以從文本中提取URL?

那麼,在字符串格式列表中的任何東西都需要仔細的異常處理。這就是說,一旦你有這個處理,它應該工作正常。

regexp with a uri schema可以做的伎倆可能看起來類似於:

<a href="(?<url>http://.*?)".*>(?<text>.+?)<\/a> 

這是一個.NET正則表達式雖然,所以你可能需要修改它在你的平臺的語言工作。

+0

將工作標記鏈接在HTML中,OP要求任何字符串。 – jlordo

+0

我剛加了答案的其餘部分。我認爲解析過程首先需要良好的異常處理。 –

+0

看看你引用的內容:他想從** text **中提取URL,這可以是任何事情。 – jlordo

0

如果你想從任何字符串中提取URL,除了使用正則表達式,沒有別的選擇。 實際上URI模式已經定義(見http://en.wikipedia.org/wiki/URI_scheme),如果你仔細觀察所有的方面,regex是非常可靠的。

相關問題