我需要使用什么 C# 和 .NET 正则表达式模式从这个 url 中获取“bar”?
http://www.foo.com/bar/123/abc
在 ATL 正则表达式中,模式应该是
http://www\.foo\.com/{[a-z]+}/123/abc
很简单:#http://www\.foo\.com/([az]+)/123/abc#
使用括号代替括号。
您将需要在正则表达式的前面和结尾使用一个字符才能使其工作。
几乎一样的东西
http://www\.foo\.com/([a-z]+)/123/abc
这几乎可以工作 - 只是一个微小的修改 - 将括号更改为括号。
http://www\.foo\.com/([az]+)/123/abc
但我认为这个正则表达式没有多大用处,因为它几乎包含了整个字符串。独立于其余部分匹配第一个路径元素不是更好吗?
^http://[^/]*/([^/]*).*$
这是一个将 url 分解为组件部分的解决方案;协议、站点和部分。不需要协议组,因此您可以给出表达式“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
部分[0]:栏
部分[1]:123
部分[2]:abc