正则表达式:从URL获取内容

时间:2010-04-22 19:55:13

标签: javascript regex url

我希望使用来自

等网址的正则表达式来获取“the-game
  • http://www.somesite.com.domain.webdev.domain.com/en/the-game/another-one/another-one/another-one/
  • http://www.somesite.com.domain.webdev.domain.com/en/the-game/another-one/another-one/
  • http://www.somesite.com.domain.webdev.domain.com/en/the-game/another-one/

3 个答案:

答案 0 :(得分:1)

var myregexp = /^(?:[^\/]*\/){4}([^\/]+)/;
var match = myregexp.exec(subject);
if (match != null) {
    result = match[1];
} else {
    result = "";
}

匹配第四个和第五个斜杠之间的任何位置,并将结果存储在变量result中。

答案 1 :(得分:1)

网址的哪些部分可能会有所不同,哪些部分是不变的?以下正则表达式将始终匹配示例中“/ en /” - the-game之后的斜杠中的任何内容。

(?<=/en/).*?(?=/)

假设第一组斜杠包含2或3个字符的语言代码,则此匹配将包含任何包含“webdev”的URL的第二组斜杠的内容。

(?<=.*?webdev.*?/.{2,3}/).*?(?=/)

希望您可以调整这些示例来完成您正在寻找的内容。

答案 2 :(得分:0)

你可能应该使用某种url解析库而不是使用正则表达式。

在python中:

from urlparse import urlparse
url = urlparse('http://www.somesite.com.domain.webdev.domain.com/en/the-game/another-one/another-one/another-one/')
print url.path

哪会产生:

/en/the-game/another-one/another-one/another-one/

从那里,你可以做一些简单的事情,比如从路径的开头剥离/en/。否则,你肯定会对正则表达式做错。不要重新发明轮子!