Regex 删除主域之前或正斜杠之后的任何内容
如何从下面的文本输入中提取域名?我试过了,但没有达到预期效果:Regex 删除主域之前或正斜杠之后的任何内容,regex,linux,shell,Regex,Linux,Shell,如何从下面的文本输入中提取域名?我试过了,但没有达到预期效果: grep -oP '(?<=[.])\w+(?=[.])' 所需输出: netgear.com arlo.com netgear.com accellion.net arkoselabs.com 感谢谷歌,我找到了很多解决方案,我试着设计自己的正则表达式 ^((http[s]?\ftp):\/)?\/([^:\/\s]+)(\/\w+*\/)([\w\-\.]+[^?\s]+)(.*)([\w\-]+)?$ [a-zA-Z
grep -oP '(?<=[.])\w+(?=[.])'
所需输出:
netgear.com
arlo.com
netgear.com
accellion.net
arkoselabs.com
感谢谷歌,我找到了很多解决方案,我试着设计自己的正则表达式
^((http[s]?\ftp):\/)?\/([^:\/\s]+)(\/\w+*\/)([\w\-\.]+[^?\s]+)(.*)([\w\-]+)?$
[a-zA-Z0-9-]+\[a-zA-Z]+($|)(?=\/)
awk-F“{print$(NF-1)”。“$NF}”
看起来您不仅试图删除/,实际上还试图从这些URL中提取主域
如果您将输入放在一个名为input.txt的文件中,我在Ubuntu 20.10上可以看到以下内容:
cat input.txt | sed-e's;。。([a-zA-Z0-9-][a-zA-Z0-9-])\1;'
作为简要说明:
域名“parts”(点之间的单词)只能使用数字、字母和破折号作为字符。该模式可以表示为:
[a-zA-Z0-9-]*
上面的正则表达式将匹配其中的2个,由一个点分隔,由一个点(可能还有一些字符)进行,并由行尾或不属于前一组的一组字符进行后续。我相信。*的贪婪本质将确保只捕获主域
可能还有更强大的解决方案可用。像
company.co.uk
这样的国际域名呢?哦,天哪,我错过了一些东西,我该怎么处理呢。也许试着列出所有在英国注册交易所或其他地方。我认为这个问题太复杂了,一个单一的注册交易所无法明智地处理,特别是在国家方面。。。您可能想考虑使用Python,特别是它可能值得注意的是,只有中间的一个,<代码> [AZ-ZO-9~-] +[[AZ-Z+] +($=(?= \)] < /代码>,做你要问的……谢谢,上面有人问,如果我遇到这个URL,你真的测试了吗?sed:-e expression#1,char 37:'s'命令的RHSI上的引用无效\1,但看起来我有输入错误。编辑并更正了该命令
netgear.com
arlo.com
netgear.com
accellion.net
arkoselabs.com