我需要匹配主机名 - 但不要使用tld:
example.com =〜/ regex / =>示例
sub.example.com =〜/ regex / => sub.example
sub.sub.example.com =〜/ regex / => sub.sub.example
正则表达式的任何帮助?感谢。
答案 0 :(得分:4)
假设您的字符串格式正确且不包含协议等内容[即http://],您需要所有角色,但不包括最终的.tld。
所以这是最简单的方法。使用正则表达式的技巧不是让事情过于复杂:
.*(?=\.\w+)
这基本上是说,给我集后面的所有字符[例如] .xxx ,这基本上只返回上一期之前的所有内容
如果你没有前瞻,那么最简单的方法就是使用:
(\w+\.)+
它将为您提供包括最终''在内的所有内容。然后修剪'。'。
答案 1 :(得分:1)
试试这个
/.+(?=\.\w+$)/
没有支持?=它将是
/(.+)\.\w+$/
然后获取第一组的内容
答案 2 :(得分:-1)
你可以剥掉tld:
s/\.[^\.]*$//;
答案 3 :(得分:-2)
(.*)\.
这并不是特定于tlds,它只会在最后一段时间之前给你一切。如果您想严格对待有效的TLD或其他任何内容,则必须以不同的方式编写。
答案 4 :(得分:-2)
(?<Domain>.*)\.(?<TLD>.*?)$
答案 5 :(得分:-3)
我不清楚你想如何让匹配工作。但是使用通常的扩展正则表达式,你应该能够将任何tld与[a-zA-Z]{2,3}
匹配所以如果你想要获得tld以外的全名,那就像
\(.\)\.[a-zA-Z]{2,3}$
应该接近。