【发布时间】:2015-03-26 19:59:21
【问题描述】:
我想使用 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"
这是我的代码,但不起作用。
val pattern = """(?:([http|https]://)?)(?:(www\.)?)([A-Za-z0-9._%+-]+)[/]?(?:.*)""".r
url match {
case pattern(domain) =>
print(domain)
case _ => print("not found!")
}
编辑: 我的正则表达式是错误的。感谢@Tabo。这是正确的。
(?:https?://)?(?:www\.)?([A-Za-z0-9._%+-]+)/?.*
【问题讨论】:
-
您将如何处理子域?您的问题可能很棘手。
-
不要尝试正则表达式。让 URL 解析器处理它。
-
@jcdyer 你能举个例子让我批准你的回答吗?
-
@jcdyer 我找到了这个。 github.com/NET-A-PORTER/scala-uri这是你的意思吗?
-
@angelokh:对不起。我有一段时间没有上SO了。看起来你得到了答案。