2013-08-01 30 views
-3

我想知道是否有人可以帮我解决正则表达式问题。我想写一个正则表达式捕捉类似这样的URL网址:请正则表达式请求

www.justin.tv/channel_name_here 

我曾尝试:

/justin\.tv\/(.*) 

我得到的问题是,当这个频道上线,有时URL转变成像这样:

www.justin.tv/channel_name_here#/w/45365675688 

我不能抓住这个。 :(任何人可以帮我这个我只是想赶上频道名称不英镑符号和URL的其余

下面是一些例子网址:。

www.justin.tv/winning_movies#/w/6347562128 
http://www.justin.tv/cine_accion_hd16#/w/6347562128/18 
http://www.justin.tv/fox_movies_hd1/ 

我会想得到:

winning_movies 
cine_accion_hd16 
fox_movies_hd1 

感谢提前:)

回答

1

简短的回答:

(?<=justin\.tv\/)([^#\/]+) 

长答案:

让我们把它分成几部分。先看后面的部分。

([^#\/]+) 

这会将字符串划分为不包含'#'或'/'的部分。现在让我们看看第一部分。

(?<=justin\.tv\/) 

的语法“(?< =”后面“)”被称为正回顾后(this page具有良好的实施例和不同类型的环视的解释)。使用一个简单的例子:

(?<=A)B 

上面的例子说:“我想所有'B'紧接在'A'之后。以我们的一个大例子来说,我们说我们需要在之后立即使用的所有部分(用'#'或'/'分隔)称为“justin.tv/”。

查看here查看表达式的例子。

+0

非常感谢你,这正是我所寻找的,也是为解释代码而感谢。 – carlosmtx

+0

不客气,@ carlosmtx。 – Xynariz

0
@justin\.tv/([^#/]+)@ 

如果您希望一切达到特定字符(-set),请使用否定类。 另外,当使用urls的正则表达式时,使用/ as分隔符很容易出错,因为你必须转义所有的/。使用其他的东西(比如@在这种情况下)

+0

感谢您的回答,我接受了Xynariz的回答 – carlosmtx