我意識到這個問題已經在堆棧溢出和網絡上多次提出,事實上,我現在已經打開了大約20個標籤,並且明顯地解決了這個問題。如何從字符串中提取網址? (任何語言)
的事情是每一個答案說沿着
線的東西你可以使用正則表達式,但它不是一個好主意,不正常,但我將不會提供任何替代品。
所以我的問題是這樣的 - 難道真的沒有可靠,明確的方式,我們可以從文本中提取網址嗎?
我意識到這個問題已經在堆棧溢出和網絡上多次提出,事實上,我現在已經打開了大約20個標籤,並且明顯地解決了這個問題。如何從字符串中提取網址? (任何語言)
的事情是每一個答案說沿着
線的東西你可以使用正則表達式,但它不是一個好主意,不正常,但我將不會提供任何替代品。
所以我的問題是這樣的 - 難道真的沒有可靠,明確的方式,我們可以從文本中提取網址嗎?
正則表達式是非常強大的工具。像大多數強大的工具一樣,它們被嚴重誤解,在許多用戶的手中是危險的,並且是某些任務的最佳答案。在字符串中匹配已知模式是它們存在的。一旦你手上有一個好的URL模式,它就會一直在其設計的上下文中工作。每個人都避開使用它的原因是,爲特定的上下文創建一個好的URL模式是很困難的工作。的圖案將通過所述執行環境(例如,操作系統file:
URL)的變化,由編程語言和/或庫,在使用中,等
對於HTTP URL的特定情況下,存在一個clear definition這是主要的堅持,你可以用它幾乎任何語言或圖書館建立一個可靠的正則表達式。
確實沒有可靠的,明確的方式,我們可以從文本中提取URL?
那麼,在字符串格式列表中的任何東西都需要仔細的異常處理。這就是說,一旦你有這個處理,它應該工作正常。
的regexp with a uri schema可以做的伎倆可能看起來類似於:
<a href="(?<url>http://.*?)".*>(?<text>.+?)<\/a>
這是一個.NET正則表達式雖然,所以你可能需要修改它在你的平臺的語言工作。
如果你想從任何字符串中提取URL,除了使用正則表達式,沒有別的選擇。 實際上URI模式已經定義(見http://en.wikipedia.org/wiki/URI_scheme),如果你仔細觀察所有的方面,regex是非常可靠的。
沒有其他優雅的解決方案比正則表達式..... –