当前位置: 首页 > news >正文

Elasticsearch——》正则regexp

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

Elasticsearch——》正则regexp

  • 一、概念
  • 二、语法
  • 三、标准操作符
    • 1、匹配任意字符
    • 2、匹配一个或多个字符
    • 3、匹配零个或多个字符
    • 4、匹配零个或一个字符
    • 5、最小最大匹配次数
    • 6、分组
    • 7、匹配左侧或右侧
    • 8、匹配字符的范围
  • 四、可选操作符
    • 1、否定
    • 2、匹配数值的范围
    • 3、匹配左侧和右侧

一、概念

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

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”,以下正则都不匹配:

  • 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"}}
}
http://www.lryc.cn/news/66376.html

相关文章:

  • 五面阿里Java岗,从小公司到阿里的面经总结
  • redis(7)
  • 互联网从业者高频单词 300个
  • 初始化vue中data中的数据
  • 神经网络的建立-TensorFlow2.x
  • python基于卷积神经网络实现自定义数据集训练与测试
  • 跟着LearnOpenGL学习3--四边形绘制
  • c#笔记-结构
  • Es分布式搜索引擎
  • open3d 裁剪点云
  • 如何对第三方相同请求进行筛选过滤
  • Go RPC
  • 真正的智能不仅仅是一个技术问题
  • 【数据结构】复杂度包装泛型
  • Ae:绘画面板
  • 常见的锁和zookeeper
  • 经验总结:(Redis NoSQL数据库快速入门)
  • form表单与模板引擎
  • 医院检验信息管理系统源码(云LIS系统源码)JQuery、EasyUI
  • React 组件
  • 硕士学位论文的几种常见节奏
  • 找兄弟单词
  • python字典翻转教学
  • sentinel 随笔 3-降级处理
  • 如何解决IP能ping通但无法上网的问题?
  • Autosar实践-CANTp
  • Redis简介
  • 报错问题修改
  • 专访惠众科技|元宇宙应用如何借助3DCAT实时云渲染实现流畅大并发呈现?
  • 加速开放计算产业化,OCTC五大原则瞄准需求痛点