C#substring解析使用正则表达式(ATL>> NET)?

时间:2009-04-14 20:37:54

标签: c# regex atl

什么是C#& .NET Regex Pattern我需要用来从这个url中获取“bar”吗?

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

在ATL正则表达式中,模式将是

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

4 个答案:

答案 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