Elasticsearch——》正则regexp

这篇具有很好参考价值的文章主要介绍了Elasticsearch——》正则regexp。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

一、概念

参考链接:【官网】正则表达式语法

regexp (正则表达式)查询允许您使用正则表达式进行项查询。“项查询” 意味着 Elasticsearch 会将正则表达式应用于由该字段生成的项,而不是字段的原始文本。

二、语法

正则表达式查询由 regexpquery_string 查询支持。

GET <index>/_search
{
  "query": {
    "regexp": {
      "<field>": {
        "value": "<regex>",
        "flags": "ALL",
      }
    }
  }
}

三、标准操作符

标准操作符 作用 示例
. 匹配任意字符 对于字符串 “abcde”,以下正则都匹配:
ab…
a.c.e
* 匹配零个或多个字符 对于字符串 “aaabbb”,以下正则都匹配:
ab
abc*
.bbb.
aaabbb
? 匹配零个或一个字符 对于字符串 “aaabbb”,以下正则都匹配:
aaa?bbb?
aaaa?bbbb?
…?.?
aa?bb?
+ 匹配一个或多个字符 对于字符串 “aaabbb”,以下正则都匹配:
a+b+
aa+bb+
a+.+
aa+bbb+
{} 最小最大匹配次数
{5}:重复匹配5次
{2,5}:重复匹配最小2次,最多5次
{2,}:# 重复匹配最小2次
对于字符串 “aaabbb”,以下正则都匹配:
- a{3}b{3}
a{2,4}b{2,4}
a{2,}b{2,}
.{3}.{3}

对于字符串 “aaabbb”,以下正则都不匹配:
a{4}b{4}
a{4,6}b{4,6}
a{4,}b{4,}
[] 匹配字符的范围(匹配方括号中的一个字符)
[abc]:a或b或c
[a-c]:a或b或c
[-abc]:-或a或b或c
[abc\-]:-或a或b或c
[^abc]:不是(a或b或c)
[^a-c]:不是(a或b或c)
[^-abc]:不是(-或a或b或c)
[^abc\-]:不是(-或a或b或c)
对于字符串 “abcb”,以下正则都匹配:
ab[cd]+
[a-d]+

对于字符串 “abcb”,以下正则都不匹配:
[^a-d]+
() 分组 对于字符串 “ababab”,以下正则都匹配:
(ab)+
ab(ab)+
(…)+
(ab)*
abab(ab)?
(ab){3}

对于字符串 “ababab”,以下正则都不匹配:
(…)+
ab(ab)?
(ab){1,2}

1、匹配任意字符

对于字符串 “abcde”,以下正则都匹配:

  • ab…
  • a.c.e
POST /my_index/_bulk
{"index":{"_id":"1"}}
{"text":"abcde"}

GET my_index/_search
{
  "query": {
    "regexp": {
      "text": "ab..."
    }
  }
}

2、匹配一个或多个字符

对于字符串 “aaabbb”,以下正则都匹配:

  • a+b+
  • aa+bb+
  • a+.+
  • aa+bbb+
POST /my_index/_bulk
{"index":{"_id":"1"}}
{"text":"aaabbb"}

GET my_index/_search
{
  "query": {
    "regexp": {
      "text": "aa+bbb+"
    }
  }
}

3、匹配零个或多个字符

对于字符串 “aaabbb”,以下正则都匹配:

  • ab
  • abc*
  • .bbb.
  • aaabbb
POST /my_index/_bulk
{"index":{"_id":"1"}}
{"text":"aaabbb"}

GET my_index/_search
{
  "query": {
    "regexp": {
      "text": "aaa*bbb*"
    }
  }
}

4、匹配零个或一个字符

对于字符串 “aaabbb”,以下正则都匹配:

  • aaa?bbb?
  • aaaa?bbbb?
  • …?.?
  • aa?bb?
POST /my_index/_bulk
{"index":{"_id":"1"}}
{"text":"aaabbb"}

GET my_index/_search
{
  "query": {
    "regexp": {
      "text": "aaaa?bbbb?"
    }
  }
}

5、最小最大匹配次数

正则 描述
{5} 重复匹配5次
{2,5} 重复匹配最小2次,最多5次
{2,} 重复匹配最小2次

对于字符串 “aaabbb”,以下正则都匹配:

  • a{3}b{3}
  • a{2,4}b{2,4}
  • a{2,}b{2,}
  • .{3}.{3}

对于字符串 “aaabbb”,以下正则都不匹配:文章来源地址https://www.toymoban.com/news/detail-496003.html

  • a{4}b{4}
  • a{4,6}b{4,6}
  • a{4,}b{4,}
POST /my_index/_bulk
{"index":{"_id":"1"}}
{"text":"aaabbb"}

GET my_index/_search
{
  "query": {
    "regexp": {
      "text": "a{2,}b{2,}"
    }
  }
}

6、分组

对于字符串 “ababab”,以下正则都匹配:

  • (ab)+
  • ab(ab)+
  • (…)+
  • (ab)*
  • abab(ab)?
  • (ab){3}

对于字符串 “ababab”,以下正则都不匹配:

  • (…)+
  • ab(ab)?
  • (ab){1,2}
POST /my_index/_bulk
{"index":{"_id":"1"}}
{"text":"ababab"}

GET my_index/_search
{
  "query": {
    "regexp": {
      "text": "(ab){1,2}"
    }
  }
}

7、匹配左侧或右侧

对于字符串 “aabb”,以下正则都匹配:

  • aabb|bbaa
  • aa(cc|bb)
  • a+b+|b+a+
  • a+(b|c)+

对于字符串 “aabb”,以下正则都不匹配:

  • aacc|bb
  • a+|b+
POST /my_index/_bulk
{"index":{"_id":"1"}}
{"text":"aabb"}

GET my_index/_search
{
  "query": {
    "regexp": {
      "text": "aa(cc|bb)"
    }
  }
}

8、匹配字符的范围

正则 描述
[abc] a或b或c
[a-c] a或b或c
[-abc] -或a或b或c
[abc\-] -或a或b或c
[^abc] 不是(a或b或c)
[^a-c] 不是(a或b或c)
[^-abc] 不是(-或a或b或c)
[^abc\-] 不是(-或a或b或c)

对于字符串 “abcb”,以下正则都匹配:

  • ab[cd]+
  • [a-d]+

对于字符串 “abcb”,以下正则都不匹配:

  • [^a-d]+
POST /my_index/_bulk
{"index":{"_id":"1"}}
{"text":"abcd"}

GET my_index/_search
{
  "query": {
    "regexp": {
      "text": "[a-d]+"
    }
  }
}

四、可选操作符

flags 参数默认为 ALL

flags 开启可选操作符 作用 示例
ALL 所有
COMPLEMENT ~ 否定 对于字符串 “abcdef”,以下正则都匹配:
ab~df
ab~cf
a~(cb)def

对于字符串 “abcdef”,以下正则都不匹配:
a(bc)def<br>abcdef
INTERVAL <> 匹配数值的范围 对于字符串 “x80”,以下正则都匹配:
x<1-100>
x<01-100>

对于字符串 “x80”,以下正则都不匹配:
x<001-100>
INTERSECTION & 匹配左侧和右侧 对于字符串 “aaabbb”,以下正则都匹配:
aaa.+&.+bbb

对于字符串 “aaabbb”,以下正则都不匹配:
aaa&bbb
ANYSTRING @ 匹配任何整个字符串

1、否定

ab〜cd,必须满足以下条件:

  • “a” 开头
  • 跟在 “b” 后面
  • 后面是任何长度的字符串,除了 “c”
  • “d” 结束

对于字符串 “abcdef”,以下正则都匹配:

  • ab~df
  • ab~cf
  • a~(cb)def

对于字符串 “abcdef”,以下正则都不匹配:

  • a~(bc)def
  • ab~cdef
POST /my_index/_bulk
{"index":{"_id":"1"}}
{"text":"abcdef"}

GET my_index/_search
{
  "query": {
    "regexp": {
      "text": "ab~df"
    }
  }
}

2、匹配数值的范围

对于字符串 “x80”,以下正则都匹配:

  • x<1-100>
  • x<01-100>

对于字符串 “x80”,以下正则都不匹配:

  • x<001-100>
POST /my_index/_bulk
{"index":{"_id":"1"}}
{"text":"x80"}

GET my_index/_search
{
  "query": {
    "regexp": {
      "text": "x<01-100>"
    }
  }
}

3、匹配左侧和右侧

对于字符串 “aaabbb”,以下正则都匹配:

  • aaa.+&.+bbb

对于字符串 “aaabbb”,以下正则都不匹配:

  • aaa&bbb
POST /my_index/_bulk
{"index":{"_id":"1"}}
{"text":"aaabbb"}

GET my_index/_search
{
  "query": {
    "regexp": {
      "text": "aaa.+&.+bbb"
    }
  }
}

到了这里,关于Elasticsearch——》正则regexp的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java 进阶篇】JavaScript 正则表达式(RegExp)详解

    JavaScript 正则表达式,通常简写为 RegExp,是一种强大的文本匹配工具,它允许你通过一种灵活的语法来查找和替换字符串中的文本。正则表达式在编程中用途广泛,不仅限于 JavaScript,在许多编程语言中也都有类似的实现。 正则表达式,简称正则或RegExp,是一个用于描述字符

    2024年02月07日
    浏览(55)
  • MySQL数据库——MySQL REGEXP:正则表达式

    正则表达式主要用来查询和替换符合某个模式(规则)的文本内容。例如,从一个文件中提取电话号码,查找一篇文章中重复的单词、替换文章中的敏感语汇等,这些地方都可以使用正则表达式。正则表达式强大且灵活,常用于非常复杂的查询。 MySQL 中,使用  REGEXP  

    2024年02月01日
    浏览(51)
  • RegExp正则表达式左限定右限定左右限定,预查询,预查寻,断言 : (?<= , (?= , (?<! , (?!

    (?= , (?= , (?! , (?! 有好多种称呼 , 我称为: 左限定, 右限定, 左否定, 右否定 (?=左限定)    (?=右限定) (?!左否定)    (?!右限定) 再提炼 ?=    ?= ?!    ?! 其它的称呼 正则表达式预查寻分为 4 种: 正向肯定预查: (?=pattern) (?=pattern) 正向否定预查: (?!pattern) (?!pattern) 反向肯定预查

    2024年02月20日
    浏览(51)
  • Oracle使用regexp_like报错ORA-12733 正则表达式太长

    注:此篇内容并没有解决正则表达式太长的问题。 在命令行窗口连接数据库: 其中: username  是你的数据库用户名。 password  是你的数据库密码。 hostname  是数据库服务器的主机名或IP地址。 port  是监听端口,默认是1521。 SID  是系统标识符,是数据库实例的唯一名称。

    2024年04月15日
    浏览(46)
  • VBA提高篇_ 31 VBA调用正则表达式_RegExp.Pattern/Global/Execute(s)/Replace(s,r)

    RegExp对象: 属于外部对象,对应的变量需要声明为Object对象,并使用CreateObject函数创建 用于创建各种外部对象,只要将该对象的完整类名作为参数(字符串形式),即可返回一个该类的对象 例: CreateObject(“word.application”),返回一个微软的word对象,用于打开和修改Word对象 结果存入在M

    2024年02月09日
    浏览(50)
  • 15.Elasticsearch 7.15 Query DSL 之 Wildcard查询、Regexp查询

    返回包含与通配符模式匹配的文档。 以下搜索返回 user.id 字段包含以 ki 开头并以 y 结尾的文档。这些匹配项可以包括 kiy、kity 或 kimchy (必填, 对象) 你想查询的字段 参数名 描述 boost (Optional, float) 用于降低或提高查询相关性得分的浮点数。默认为1.0。 rewrite (可选,字符串)

    2023年04月08日
    浏览(45)
  • 常用短链接生成工具推荐

    为大家汇总了几个最常用的短链接工具 每种短网址缩短工具各有所长,可以选择需要的使用 1. 短链接 https://dlj.cn/ 首先推荐我们团队开发的免费短网址生成工具,最大的特点就是简单好用、免费查看统计报表、自定义域名 从功能上看,综合几个短链接工具中功能最强大的,

    2024年02月13日
    浏览(46)
  • 推荐11个好用的prompt工具网站(附链接+论文)

    同学们,你们prompt是自己苦哈哈码的吗?可别了,有现成的工具为啥不用? 今天我就和大家分享一些好用的prompt工具网站,用熟了ChatGPT、midjourney、stable diffusion能玩起来更爽!搜罗了有十几个,大家自行尝试。 科研人注意看文末,我还整理了不少关于prompt的论文,经典的前

    2024年02月08日
    浏览(53)
  • 构建完善的安全渗透测试环境:推荐工具、资源和下载链接

    1、攻击机kali: kali官网 渗透测试工具Kali Linux安装与使用 kali汉化  虚拟机网络建议设置成NAT模式,桥接有时不稳定。 2、靶机OWASP_Broken_Web_Apps: 迅雷下载 网盘下载 安装教程 开机之后需要登录,默认的账号/密码:root       owaspbwa 在浏览器中打开获取到的ip要根据自己的情

    2024年02月07日
    浏览(65)
  • 好用的编程软件5个(全部免费,带链接加其它软件推荐)

    提示:这个目录有问题,最好用左边的 前言 提示 编程软件 1.VS code(全称:Visual Studio Code) 2.HBuilderX 3.Eclipse(集成开发环境) 4.Notepad++ 5.Dev-C++(别名:Dev-cpp) 附录 1.其它软件推荐: 2.后记 3.投票 编程,肯定少不了一些编程软件,以下是5个实用的编程软件。(第一次发文章

    2024年02月04日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包