我想使用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)
你可以试试:
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)
您可以使用 Java URL 类获取 Host,也可以查看 Apache 库
new URL("https://www.bell.com?token=123").getHost
Run Code Online (Sandbox Code Playgroud)