1

我需要使用什么 C# 和 .NET 正则表达式模式从这个 url 中获取“bar”?

http://www.foo.com/bar/123/abc

在 ATL 正则表达式中,模式应该是

http://www\.foo\.com/{[a-z]+}/123/abc
4

4 回答 4

3

很简单:#http://www\.foo\.com/([az]+)/123/abc#

使用括号代替括号。

您将需要在正则表达式的前面和结尾使用一个字符才能使其工作。

于 2009-04-14T20:40:00.273 回答
2

几乎一样的东西

    http://www\.foo\.com/([a-z]+)/123/abc
于 2009-04-14T20:42:12.110 回答
2

这几乎可以工作 - 只是一个微小的修改 - 将括号更改为括号。

http://www\.foo\.com/([az]+)/123/abc

但我认为这个正则表达式没有多大用处,因为它几乎包含了整个字符串。独立于其余部分匹配第一个路径元素不是更好吗?

^http://[^/]*/([^/]*).*$
于 2009-04-14T20:42:25.383 回答
2

这是一个将 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

于 2009-04-15T09:39:26.127 回答