我试图匹配网址内部。
www.facebook.com
http://www.facebook.com
http://facebook.com
应该返回facebook
我目前的正则表达式为(?<=www\.|http:\/\/).*(?=\.[a-zA-Z]{2,4})
除了http://www.
之外,所有内容都正确匹配,匹配为www.facebook
如何匹配最后一次www
或http://
答案 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并提供帮助!