從給定字串中提取 URL


在資訊時代,遇到包含 URL 的文字字串是很常見的。作為資料清洗或網路抓取任務的一部分,我們經常需要提取這些 URL 以進行進一步處理。在本文中,我們將探討如何使用 C++(一種提供對系統資源進行細粒度控制的高效能語言)來實現此目的。

理解 URL

URL(統一資源定位符)是對 Web 資源的引用,它指定了該資源在計算機網路上的位置以及檢索它的機制。簡單來說,URL 就是網頁地址。

問題陳述

給定一個包含多個 URL 的字串,我們的任務是從字串中提取所有存在的 URL。

解決方案

為了解決這個問題,我們將使用 C++ 中的正則表示式 (regex) 支援。正則表示式是一系列字元,用於定義搜尋模式,主要用於字串模式匹配。

我們的方法涉及以下步驟:

定義正則表示式模式:定義一個匹配 URL 一般結構的正則表示式模式。

匹配和提取:使用正則表示式模式匹配和提取給定字串中存在的所有 URL。

C++ 實現

示例

以下是實現我們解決方案的 C++ 程式碼:

#include <bits/stdc++.h>
using namespace std;

// Function to extract all URLs from a string
vector<string> extractURLs(string str) {
   vector<string> urls;
   regex urlPattern("(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?");
   
   auto words_begin = sregex_iterator(str.begin(), str.end(), urlPattern);
   auto words_end = sregex_iterator();
   
   for (sregex_iterator i = words_begin; i != words_end; i++) {
      smatch match = *i;                                                     
      string match_str = match.str(); 
      urls.push_back(match_str);
   }
   
   return urls;
}

int main() {
   string str = "Visit https://tutorialspoint.tw and http://www.tutorix.com for more information.";
   
   vector<string> urls = extractURLs(str);
   cout << "URLs found in the string:" << endl;
   for (string url : urls)
      cout << url << endl;
   
   return 0;
}

輸出

URLs found in the string:
https://tutorialspoint.tw and http
www.tutorix.com for more information.

解釋

讓我們考慮一下這個字串:

str = "Visit https://tutorialspoint.tw and http://www.tutorix.com for more information."

將我們的函式應用於此字串後,它會匹配這兩個 URL 並將其提取到一個向量中。

urls = ["https://tutorialspoint.tw", "http://www.tutorix.com"]

這個向量是我們程式的輸出。

結論

從字串中提取 URL 的任務為文字處理和正則表示式的使用提供了寶貴的見解。這種解決問題的方法以及它所需的 C++ 程式設計技能,在資料分析、網路抓取和軟體開發領域非常有用。

更新於:2023年5月17日

426 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.