[英]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/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.