You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Elasticsearch正则匹配域名及子域名(不含伪域名)

Elasticsearch正则匹配nytimes.com主域名及所有子域名的解决方案

直接用这个正则表达式就能满足需求:
^(?:.*\.)?nytimes\.com$

正则各部分说明:

  • ^:锁定字符串开头,避免匹配到字符串中间包含nytimes.com的情况
  • (?:.*\.)?:非捕获分组,.*匹配任意长度的子域名内容(支持数字、字母、连字符,以及多级子域名如a.b.),\.匹配子域名和主域名之间的点号,?表示该分组可选,也就是允许直接匹配主域名nytimes.com
  • nytimes\.com:精确匹配主域名部分,这里的\.必须转义,否则正则里的.会匹配任意字符
  • $:锁定字符串结尾,确保不会匹配到fakenytimes.com这类域名(因为这类域名结尾是times.com,不符合nytimes.com$的要求)

Elasticsearch中使用示例(regexp查询):

{
  "query": {
    "regexp": {
      "your_domain_field_name": "^(?:.*\\.)?nytimes\\.com$"
    }
  }
}

注意在JSON格式中,反斜杠需要额外转义,所以写成\\.而不是\.。

为什么你之前的正则不行:

你尝试的([a-z].?)nytimes.com有几个问题:

  1. 只允许单个小写字母开头,无法匹配包含数字、连字符或多级子域名的情况
  2. 没有用^和$锁定首尾,可能会误匹配到包含nytimes.com的长字符串
  3. 点号未转义,nytimes.com里的.会匹配任意字符,而非实际的点号

内容的提问来源于stack exchange,提问作者Yoni Levine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:35:19