正则表达式匹配此前或那之前的外观

时间:2014-06-21 00:16:17

标签: ruby regex

我试图匹配网址内部。

www.facebook.com http://www.facebook.com http://facebook.com

应该返回facebook

我目前的正则表达式为(?<=www\.|http:\/\/).*(?=\.[a-zA-Z]{2,4})

除了http://www.之外,所有内容都正确匹配,匹配为www.facebook

如何匹配最后一次wwwhttp://

的正则表达式

Rubular Link

2 个答案:

答案 0 :(得分:1)

在Ruby中,你可以使用它:

(?i)^(?:http://)?(?:\w+\.)?\K\w+(?=\.[a-z]{2,4}$)

请参阅demo

  • ^声称我们位于字符串的开头
  • (?i)让我们处于不区分大小写的模式
  • (?:http://)?可选地匹配http://部分
  • (?:\w+\.)?可选地匹配子域
  • \K保留我们从要返回的比赛中匹配的内容
  • \w+匹配facebook
  • (?=\.[a-z]{2,4}$)前瞻检查它后面是一个域,然后是字符串的结尾。

答案 1 :(得分:0)

在python中,我使用re:

中的sub解决了这个问题
from re import sub
x = "http://www.facebook.com" #hypothetical website
y = sub("(.*www\.|http:\/\/)(.*)\.com","\\2",x) 
print y

输出“facebook”

希望这可以转化为Ruby并提供帮助!