呼和浩特网站建设价格,做一个企业的网站怎么做的,免费网站成品,建设摩托车价格大全推荐链接#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD… 推荐链接 总结——》【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 会将正则表达式应用于由该字段生成的项而不是字段的原始文本。
二、语法
正则表达式查询由 regexp 和 query_string 查询支持。
GET index/_search
{query: {regexp: {field: {value: regex,flags: ALL,}}}
}三、标准操作符
标准操作符作用示例.匹配任意字符对于字符串 “abcde”以下正则都匹配ab… a.c.e*匹配零个或多个字符对于字符串 “aaabbb”以下正则都匹配ababc*.bbb.aaabbb?匹配零个或一个字符对于字符串 “aaabbb”以下正则都匹配aaa?bbb?aaaa?bbbb?…?.?aa?bb?匹配一个或多个字符对于字符串 “aaabbb”以下正则都匹配abaabba.aabbb{}最小最大匹配次数{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”以下正则都匹配
abaabba.aabbb
POST /my_index/_bulk
{index:{_id:1}}
{text:aaabbb}GET my_index/_search
{query: {regexp: {text: aabbb}}
}
3、匹配零个或多个字符
对于字符串 “aaabbb”以下正则都匹配
ababc*.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|bbaaaa(cc|bb)ab|baa(b|c)
对于字符串 “aabb”以下正则都不匹配
aacc|bba|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~dfab~cfa~(cb)def对于字符串 “abcdef”以下正则都不匹配a(bc)defbrabcdefINTERVAL匹配数值的范围对于字符串 “x80”以下正则都匹配x1-100x01-100对于字符串 “x80”以下正则都不匹配x001-100INTERSECTION匹配左侧和右侧对于字符串 “aaabbb”以下正则都匹配aaa..bbb对于字符串 “aaabbb”以下正则都不匹配aaabbbANYSTRING匹配任何整个字符串
1、否定 ab〜cd必须满足以下条件 以 “a” 开头跟在 “b” 后面后面是任何长度的字符串除了 “c”以 “d” 结束 对于字符串 “abcdef”以下正则都匹配
ab~dfab~cfa~(cb)def
对于字符串 “abcdef”以下正则都不匹配
a~(bc)defab~cdef
POST /my_index/_bulk
{index:{_id:1}}
{text:abcdef}GET my_index/_search
{query: {regexp: {text: ab~df}}
}2、匹配数值的范围
对于字符串 “x80”以下正则都匹配
x1-100x01-100
对于字符串 “x80”以下正则都不匹配
x001-100
POST /my_index/_bulk
{index:{_id:1}}
{text:x80}GET my_index/_search
{query: {regexp: {text: x01-100}}
}3、匹配左侧和右侧
对于字符串 “aaabbb”以下正则都匹配
aaa..bbb
对于字符串 “aaabbb”以下正则都不匹配
aaabbb
POST /my_index/_bulk
{index:{_id:1}}
{text:aaabbb}GET my_index/_search
{query: {regexp: {text: aaa..bbb}}
}