Scala正则表达式从网址中提取域名

ang*_*okh 4 regex scala

我想使用Scala正则表达式从以下输入中提取bell.com.我尝试了一些没有成功的变化.

"www.bell.com"
"bell.com"
"http://www.bell.com"
"https://www.bell.com"
"https://bell.com/about"
"https://www.bell.com?token=123"
Run Code Online (Sandbox Code Playgroud)

这是我的代码,但不起作用.

val pattern = """(?:([http|https]://)?)(?:(www\.)?)([A-Za-z0-9._%+-]+)[/]?(?:.*)""".r
url match {
  case pattern(domain) =>
    print(domain)
  case _ => print("not found!")
}
Run Code Online (Sandbox Code Playgroud)

编辑:我的正则表达式错了.感谢@Tabo.这是正确的.

(?:https?://)?(?:www\.)?([A-Za-z0-9._%+-]+)/?.*
Run Code Online (Sandbox Code Playgroud)

Kei*_*son 6

你可以试试:

import java.net.URL
import util.Try

val t = "https://www.bell.com?token=123"

val url = Try { new URL(t) }.toOption
Run Code Online (Sandbox Code Playgroud)


Eug*_*nev 5

您可以使用 Java URL 类获取 Host,也可以查看 Apache 库

new URL("https://www.bell.com?token=123").getHost
Run Code Online (Sandbox Code Playgroud)