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