java - 使用正则表达式,如何提取顶级域名?

标签 java regex regex-lookarounds

我需要创建一个有效的正则表达式(最少的回溯)来从某些日志中提取顶级域名。 URL 可以是四种类型之一,因此我需要以下内容:

  1. “website.ca/somepage”中提取website.ca
  2. 提取"https://subdomain.website.com/somepage "中的website.com
  3. 提取“10.10.10.10/somepage”中的10.10.10.10
  4. “myserver/somepage”中提取myserver

我有一个半工作的解决方案,但它遗漏了一些。

"[^"]*(\w+\.[a-z]+|\d+\.\d+\.\d+\.\d+)\/

有人有什么建议吗?

最佳答案

尝试这个正则表达式:

([a-zA-Z0-9]+\.[a-zA-Z]+|[0-9\.]+|[a-zA-Z0-9]+)(?=\/)

您可以在 regex101.com 上进行测试:https://regex101.com/r/dK0bJ7/4

匹配 1:website.com
比赛 2:10.10.10.10
匹配 3:我的服务器
匹配 4:website.ca

关于java - 使用正则表达式,如何提取顶级域名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37121251/

相关文章:

java - 在Java中将类似文件的字符串拆分为字符串

java - 字符串如何在java中终止?

python - 正则表达式,如何在 12/24 小时时间戳中删除冒号以外的所有非字母数字?

regex - 匹配键值对的 Shell 命令

java - 正则表达式中的可选前瞻

regex - gvim 正则表达式匹配单词对

Java:生成一个范围内的随机 double 值(包括范围的最小值和最大值)

java - 在 Java 中复制 map 对象

python - 提取系列对象之间的字符串

regex - VBA正则表达式单词后的所有内容