2011-03-27 84 views
1

我正在寻找从URL中提取字符串。这里是一个例子来说明我在找什么。从URL中提取字符串的正则表达式

输入网址:http://www.nba.com/bulls/stats/ 输出:多头

换句话说,我希望能够提取的倒数第二个和最后一个“/”在URL之间的字符串。我知道我可以通过“/”来分割并提取上一个第二个术语,但是我正在寻找一个更清洁的正则表达式解决方案。

任何想法?

+1

我不神交正则表达式和你的字符串拆分选项似乎很简单的对我说:'头(尾(不公开(strsplit(URL, “/”)),2) ,1)' – Chase 2011-03-28 02:04:39

+0

倒数第二个和最后一个之间的字符串是stats,而不是公牛。你的意思是你想要第三个倒数第二个倒数/? – 2011-03-28 03:35:44

+0

是的。我的意思是第三倒数第二倒数 – Ramnath 2011-03-31 14:05:14

回答

3

试试这个:

http://[^/]+/([^/]+)/[^/]+/? 
1

下面的正则表达式可以做的工作

http[s]?://[\w\.]+/(\w+)/.* 
+0

我可能是指http [s]?而不是http [s] * – Max 2011-03-27 23:20:25

+0

如果字符串中有任何特殊字符(如'-'或'%'),则不匹配。我不确定这是否相关。 – 2011-03-27 23:20:34

+0

为什么不简单地使用“https?://'? – Czechnology 2011-03-27 23:32:17

1

如果必须通过正则表达式做到这一点,你可以简单地这样做(假设JavaScript的风格正则表达式语法):

/\/([^\/]*)\/[^\/]*\/$/ 

为求使它更容易理解,NET版本将是这样的:

@"/([^/]*)/[^/]*/$" 

但是,我认为的想法拆分/确实是这样做的正确方法。