Java 使用正则获取域名
时间: 2023-11-26 17:04:57 浏览: 94
可以使用正则表达式来获取域名。下面是一个使用 Java 正则表达式获取域名的示例代码:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExtractDomainName {
public static void main(String[] args) {
String url = "https://www.example.com/path/to/page.html";
Pattern pattern = Pattern.compile("^(?:https?:\\/\\/)?(?:[^@\\/\\n]+@)?(?:www\\.)?([^:\\/\\n?]+)");
Matcher matcher = pattern.matcher(url);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
}
}
```
这个正则表达式可以从 URL 中提取出域名,包括子域名和顶级域名。例如,上面的示例代码会输出 `example.com`。
解释一下这个正则表达式:
- `^` 表示从字符串开头开始匹配。
- `(?:https?:\\/\\/)?` 表示可选的以 `http://` 或 `https://` 开头。
- `(?:[^@\\/\\n]+@)?` 表示可选的用户名,例如 `user@example.com` 中的 `user`。
- `(?:www\\.)?` 表示可选的 `www.` 前缀。
- `([^:\\/\\n?]+)` 表示域名,包括子域名和顶级域名,例如 `example.com`。这里使用了一个字符集,表示除了 `:`、`/`、`\n` 和 `?` 之外的任意字符。这样可以避免匹配到路径或查询参数。
- 最后使用 `Matcher` 对象的 `find()` 方法来查找第一个匹配项,并使用 `group(1)` 方法获取第一个捕获组(也就是域名)。
阅读全文