我刚才问了一个关于使用正则表达式从特定目录中的URL中提取匹配的问题.
例如:www.domain.com/shop/widgets/match/
给出的解决方案是^ / shop.* /([^ /])/?$
这将返回“匹配”
但是,我的文件结构已经改变,我现在需要一个表达式,而不是在“pages”和“system”之外的任何目录中返回“match”
基本上我需要一个表达式,它将返回以下“匹配”:
www.domain.com/shop/widgets/match/ www.domain.com/match/
但不是:
www.domain.com/pages/widgets/match/ www.domain.com/pages/ www.domain.com/system/widgets/match/ www.domain.com/system/
我一直在努力奋斗几天.
谢谢
解决方法
这只是Grahams上面很好的答案的替代方案. C#中的代码(但是正则表达式部分,无关紧要):
void MatchDemo() { var reg = new Regex("( " + " (\\w+[.]) " + " | " + " (\\w+[/])+ " + ") " + "(shop[/]|\\w+[/]) " + //the URL-string must contain the sequence "shop" "(match) ",RegexOptions.IgnorePatternWhitespace); var url = @"www.domain.com/shop/widgets/match/"; var retVal = reg.Match(url).Groups[5]; //do we have anything in the fifth parentheses? Console.WriteLine(retVal); Console.ReadLine(); }
/汉斯