Ruby 要匹配的正则表达式在这个或那个之前查看
我正在尝试匹配url的内部Ruby 要匹配的正则表达式在这个或那个之前查看,ruby,regex,Ruby,Regex,我正在尝试匹配url的内部 www.facebook.comhttp://www.facebook.comhttp://facebook.com 应该返回facebook 我当前的正则表达式是Ruby中的(?),您可以使用: (?i)^(?:http://)?(?:\w+\.)?\K\w+(?=\.[a-z]{2,4}$) 看 ^断言我们位于字符串的开头 (?i)使我们处于不区分大小写的模式 (?:http://)?可以选择匹配http://部分 (?:\w+\)?可以选择匹配子域 \K将我
www.facebook.com
http://www.facebook.com
http://facebook.com
应该返回facebook
我当前的正则表达式是Ruby中的
(?),您可以使用:
(?i)^(?:http://)?(?:\w+\.)?\K\w+(?=\.[a-z]{2,4}$)
看
^
断言我们位于字符串的开头
(?i)
使我们处于不区分大小写的模式
(?:http://)?
可以选择匹配http://
部分
(?:\w+\)?
可以选择匹配子域
\K
将我们已匹配的内容从要返回的匹配中排除
\w+
匹配facebook
(?=\.[a-z]{2,4}$)
lookahead检查它后面是域,然后是字符串的结尾
在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并对您有所帮助!为什么您试图使用lookback而不是使用基本分组?仅供参考,添加了演示和说明。:)