通过正则表达式从字符串获取域名

时间:2015-05-09 05:05:23

标签: regex vb.net

我正在尝试从字符串中获取域名。来自此网址http://www.tvstore.nl/product/572875/samsung-ue48ju7500.html

我希望得到www.tvstore.nl。但是,通过此功能,我得到www.tvstore。我错过了什么?我希望这适用于任何TLD,无论是.com,.org,.de,.co等。

Protected Function ExtractDomainFromURL(ByVal sURL As String) As String
    Dim rg As New Regex("://(?<host>([a-z\d][-a-z\d]*[a-z\d]\.)*[a-z][-a-z\d]+[a-z])")
    If rg.IsMatch(sURL) Then
        Return rg.Match(sURL).Result("${host}")
    Else
        Return String.Empty
    End If
End Function

1 个答案:

答案 0 :(得分:1)

:\/\/(?<host>([a-z\d][-a-z\d]*[a-z\d]\.)*[a-z][-a-z\d]*[a-z])

                                                     ^^

只需将量词从+更改为*。正如您使用+一样,它预计会有3个字母,而您只有2nl。见演示。

https://regex101.com/r/iV6mP5/3