什么是C#& .NET Regex Pattern我需要用来从这个url中获取“bar”吗?
http://www.foo.com/bar/123/abc
在ATL正则表达式中,模式将是
http://www\.foo\.com/{[a-z]+}/123/abc
答案 0 :(得分:3)
简单: #http:// WWW \包含.foo \的.com /([A-Z] +)/ 123 / ABC#
使用括号代替括号。
您需要在正则表达式的正面和末尾使用一个字符才能使其正常工作。
答案 1 :(得分:2)
几乎相同的事情
http://www\.foo\.com/([a-z]+)/123/abc
答案 2 :(得分:2)
这几乎可以工作 - 只需要很小的修改 - 将括号更改为括号。
http://www\.foo\.com/([a-z]+)/123/abc
但我认为这个正则表达式并没有多大用处,因为它几乎包含整个字符串。将第一个路径元素与其余路径元素独立匹配会不会更好?
^http://[^/]*/([^/]*).*$
答案 3 :(得分:2)
这是一个将网址分解为组件的解决方案;协议,网站和部分。协议组不是必需的,因此您可以使用表达式“www.foo.com/bar/123/abc”。零件组可以包含多个子组,表示站点下的文件夹和文件。
^(?<protocol>.+://)?(?<site>[^/]+)/(?:(?<part>[^/]+)/?)*$
您可以使用以下表达式来获取'foo'
string s = Regex.Match(@"http://www.foo.com/bar/123/abc", @"^(?<protocol>.+://)?(?<site>[^/]+)/(?:(?<part>[^/]+)/?)*$").Groups["part"].Captures[0].Value;
表达结果的细分如下
协议:http://
网站:www.foo.com
part [0]:bar
第[1]部分:123
第[2]部分:abc