我需要在下面的示例网址中找到这样一个字符串末尾的最后两个值“simple1”和“1.2-SNAPSHOT”。但我的下面的代码(尝试得到simple1 / 1.2-SNAPSHOT /)不起作用,任何人都可以帮忙吗?
List<string> artifacts = new List<string>(); // this is already foler URL
// store all URLs to the artifacts be deleted
artifacts = nexusAPI.findArtifacts(repository, contents, days, pattern);
var regex = new Regex(".*\\/(.*\\/.*\\/)$");
foreach (string url in artifacts)
{
Console.WriteLine("group/artifact: {0}", regex.Matches(url));
}
答案 0 :(得分:0)
我只是将字符串拆分为&#39; /&#39;并获得最后两部分。正则表达式不会做更多的事情。
答案 1 :(得分:0)
如果必须使用RegEx,那么您遇到的问题是,正则表达式是贪婪的 - 这意味着它尽可能多地放入每个。*。所以你的第一步是让正则表达式不贪婪。只需将其用作您的模式:
(.*?)/
Here's一个简单的测试,展示了这是如何运作的。
这告诉正则表达式查找斜杠上的任何字符,然后停止。
当您致电Regex.Matches(url, "(.*?)/")
时,您将收到一系列匹配数据。从那里,你可以看看最后两个元素。
当然,正如SledgeHammer所提到的,这是正则表达式不必要甚至繁琐的一种情况。只需使用url.Split(new char[] {'/'})
即可获得所需的结果。