C#正则表达解析/simple1/1.2-SNAPSHOT/

时间:2016-08-17 16:49:31

标签: c# regex

我需要在下面的示例网址中找到这样一个字符串末尾的最后两个值“simple1”和“1.2-SNAPSHOT”。但我的下面的代码(尝试得到simple1 / 1.2-SNAPSHOT /)不起作用,任何人都可以帮忙吗?

http://localhost:8060/nexus/service/local/repositories/snapshots/content/org/sonatype/mavenbook/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));                
            }

2 个答案:

答案 0 :(得分:0)

我只是将字符串拆分为&#39; /&#39;并获得最后两部分。正则表达式不会做更多的事情。

答案 1 :(得分:0)

如果必须使用RegEx,那么您遇到的问题是,正则表达式是贪婪的 - 这意味着它尽可能多地放入每个。*。所以你的第一步是让正则表达式不贪婪。只需将其用作您的模式:

(.*?)/

Here's一个简单的测试,展示了这是如何运作的。

这告诉正则表达式查找斜杠上的任何字符,然后停止。

当您致电Regex.Matches(url, "(.*?)/")时,您将收到一系列匹配数据。从那里,你可以看看最后两个元素。

当然,正如SledgeHammer所提到的,这是正则表达式不必要甚至繁琐的一种情况。只需使用url.Split(new char[] {'/'})即可获得所需的结果。