簡體   English   中英

正則表達式用單詞匹配第一個URL

[英]Regex Matching First URL with word

我需要的:

我有一個像這樣的字符串:

自行車: http//website.net/bikeurl玩具: http//website.net/rc-cars
日歷: http//website.net/schedule

我要匹配指定的單詞和其后的第一個URL。 因此,如果我將單詞指定為“ Bike”,則應該得到:

自行車: http//website.net/bikeurl

或者,如果可能的話,僅提供Bike字詞的網址:

http://website.net/bikeurl

或者,如果我指定玩具,我應該得到:

玩具: http//website.net/rc-cars

或者如果可能的話

http://website.net/rc-cars

我正在使用什么:

我正在使用此正則表達式:

(Bike)(.*)((https?|ftp):/?/?)(?:(.*?)(?::(.*?)|)@)?([^:/\s]+)(:([^/]*))?(((?:/\w+)*)/)([-\w.]+[^#?\s]*)?(\?([^#]*))?(#(.*))?

結果:

它匹配:

自行車: http//website.net/bikeurl玩具: http//website.net/rc-cars

我只想要:

自行車: http//website.net/bikeurl

我不是正則表達式專家,我嘗試使用{n} {n,},但它不匹配任何內容或匹配相同的內容

我正在使用.NET C#,所以我在這里進行測試http://regexhero.net/tester/

這是另一種方法:

Bike(.*?):\\s\\S*

這是一個示例,僅說明如何獲取相應的URL候選:

var inputString = "Bike’s: http://website.net/bikeurl Toys: http://website.net/rc-cars Calendar: http://website.net/schedule";
var word = "Bike";
var url = new Regex( word + @"(.*?):\s(?<URL>\S*)" )
    .Match( inputString )
    .Result( "${URL}" );

如果我正確理解您的問題。 您需要一個通用正則表達式,它將根據單詞選擇一個URL。 這是一個選擇帶有bike的網址的網址:

(.(?<!\s))*\/\/((?!\s).)*bike((?!\s).)*

如果您將bike其他字詞。 它將選擇相應的URL。

編輯1:
根據您的修改,以下是根據URL前面的單詞進行選擇的一種:

(TOKEN((?!\s).)*\s+)((?!\s).)*

它將選擇單詞+ URL,例如。
(Bike((?!\\s).)*\\s+)((?!\\s).)*會選擇Bike's: http://website.net/bikeurl (Toy((?!\\s).)*\\s+)((?!\\s).)*會選擇Toys: http://website.net/rc-cars (Calendar((?!\\s).)*\\s+)((?!\\s).)*將選擇Calendar: http://website.net/schedule
如果要確保字符串包含URL,則可以改用以下方法:

(TOKEN((?!\s).)*\s+)((?!\s).)*\/\/((?!\s).)*

它將確保字符串的第二部分,即。 應該包含網址的網址之間有一個//

如果您確實需要確保它是一個URL,請查看以下內容:

使用正則表達式驗證網址

正則表達式檢查有效的網址

這是另一個解決方案。 我會將自行車,玩具和日歷分開放在字典中,然后將url作為值輸入,然后在需要時調用它。

        Dictionary<string, string> myDic = new Dictionary<string, string>() 
        { 
            { "Bike’s:",   "http://website.net/bikeurl" },

            { "Toys:",     "http://website.net/rc-cars" },

            { "Calendar:", "http://website.net/schedule"  }
        };

        foreach (KeyValuePair<string, string> item in myDic)
        {
            if (item.Key.Equals("Bike's"))
            {
                 //do something
            }
        }

希望我的想法之一對您有所幫助。

暫無
暫無

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

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