-3

我想知道是否有人可以帮助我解决正则表达式问题。我想编写一个正则表达式来捕获类似于此 URL 的 URL:

www.justin.tv/channel_name_here

我努力了:

/justin\.tv\/(.*)

我遇到的问题是,当此频道上线时,有时 URL 会转换为以下内容:

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

我不能抓住这个。:( 任何人都可以帮我解决这个问题吗?我只想获取不带井号符号和 URL 其余部分的频道名称。

以下是一些示例 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

提前致谢!:)

4

2 回答 2

1

简短的回答:

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

长答案:

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

([^#\/]+)

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

(?<=justin\.tv\/)

语法 "(?<=" 后跟 ")" 被称为正向回看(这个页面有很好的例子和不同类型的回看的解释)。使用一个简单的例子:

(?<=A)B

上面的例子说“我想要紧跟在‘A’之后的所有‘B’。” 转到我们的大示例,我们说我们想要紧跟在名为“justin.tv/”的部分之后的所有部分(用“#”或“/”分隔)。

在此处查看实际中的表达式示例。

于 2013-08-01T23:47:35.057 回答
0
@justin\.tv/([^#/]+)@

如果您希望所有内容都达到某个字符(-set),请使用否定类。此外,在处理 url 的正则表达式时,使用 / 作为分隔符容易出错,因为您必须转义所有 /。改用其他东西(如本例中的@)

于 2013-08-01T23:48:30.067 回答