精华内容
下载资源
问答
  • 通配符和正则表达式查询 wildcard查询和prefix查询类似,也是一个基于词条的低级别查询。但是它能够让你指定一个模式(Pattern),而不是一个前缀(Prefix)。它使用标准的shell通配符:?用来匹配任意字符,*用来...

    通配符和正则表达式查询

    wildcard查询和prefix查询类似,也是一个基于词条的低级别查询。但是它能够让你指定一个模式(Pattern),而不是一个前缀(Prefix)。它使用标准的shell通配符:?用来匹配任意字符,*用来匹配零个或者多个字符。

    以下查询能够匹配包含W1F 7HW和W2F 8HW的文档:

    GET /my_index/address/_search
    {
        "query": {
            "wildcard": {
                "postcode": "W?F*HW" 
            }
        }
    }

    假设现在你想匹配在W地域(Area)的所有邮政编码。使用前缀匹配时,以WC开头的邮政编码也会被匹配,在使用通配符查询时也会遇到类似的问题。我们只想匹配以W开头,紧跟着数字的邮政编码。使用regexp查询能够让你写下更复杂的模式:

    GET /my_index/address/_search
    {
        "query": {
            "regexp": {
                "postcode": "W[0-9].+" 
            }
        }
    }

    这个正则表达式的规定了词条需要以W开头,紧跟着一个0到9的数字,然后是一个或者多个其它字符。

    wildcard和regexp查询的工作方式和prefix查询完全一样。它们也需要遍历倒排索引中的词条列表来找到所有的匹配词条,然后逐个词条地收集对应的文档ID。它们和prefix查询的唯一区别在于它们能够支持更加复杂的模式。

    这也意味着使用它们存在相同的风险。对一个含有很多不同词条的字段运行这类查询是非常消耗资源的。避免使用一个以通配符开头的模式(比如,*foo或者正则表达式: .*foo)。

    尽管对于前缀匹配,可以在索引期间准备你的数据让它更加高效,通配符和正则表达式匹配只能在查询期间被完成。虽然使用场景有限,但是这些查询也有它们的用武之地。

    注意

    prefix,wildcard以及regexp查询基于词条进行操作。如果你在一个analyzed字段上使用了它们,它们会检查字段中的每个词条,而不是整个字段。

    比如,假设我们的title字段中含有"Quick brown fox",它会产生词条quick,brown和fox。

    这个查询能够匹配:

    { "regexp": { "title": "br.*" }}

    而不会匹配:

    { "regexp": { "title": "Qu.*" }} 
    { "regexp": { "title": "quick br*" }}


    展开全文
  • 通配符和正则表达式查询   wildcard查询和prefix查询类似,也是一个基于词条的低级别查询。但是它能够让你指定一个模式(Pattern),而不是一个前缀(Prefix)。它使用标准的shell通配符:?用来匹配任意字符,*用来...

    原文链接:http://blog.csdn.net/dm_vincent/article/details/42024799

     

    通配符和正则表达式查询

     

    wildcard查询和prefix查询类似,也是一个基于词条的低级别查询。但是它能够让你指定一个模式(Pattern),而不是一个前缀(Prefix)。它使用标准的shell通配符:?用来匹配任意字符,*用来匹配零个或者多个字符。

    以下查询能够匹配包含W1F 7HW和W2F 8HW的文档:

    GET /my_index/address/_search
    {
        "query": {
            "wildcard": {
                "postcode": "W?F*HW" 
            }
        }
    }

    假设现在你想匹配在W地域(Area)的所有邮政编码。使用前缀匹配时,以WC开头的邮政编码也会被匹配,在使用通配符查询时也会遇到类似的问题。我们只想匹配以W开头,紧跟着数字的邮政编码。使用regexp查询能够让你写下更复杂的模式:

    GET /my_index/address/_search
    {
        "query": {
            "regexp": {
                "postcode": "W[0-9].+" 
            }
        }
    }

    这个正则表达式的规定了词条需要以W开头,紧跟着一个0到9的数字,然后是一个或者多个其它字符。

    wildcard和regexp查询的工作方式和prefix查询完全一样。它们也需要遍历倒排索引中的词条列表来找到所有的匹配词条,然后逐个词条地收集对应的文档ID。它们和prefix查询的唯一区别在于它们能够支持更加复杂的模式。

    这也意味着使用它们存在相同的风险。对一个含有很多不同词条的字段运行这类查询是非常消耗资源的。避免使用一个以通配符开头的模式(比如,*foo或者正则表达式: .*foo)。

    尽管对于前缀匹配,可以在索引期间准备你的数据让它更加高效,通配符和正则表达式匹配只能在查询期间被完成。虽然使用场景有限,但是这些查询也有它们的用武之地。

    注意

    prefix,wildcard以及regexp查询基于词条进行操作。如果你在一个analyzed字段上使用了它们,它们会检查字段中的每个词条,而不是整个字段。

    比如,假设我们的title字段中含有"Quick brown fox",它会产生词条quick,brown和fox。

    这个查询能够匹配:

    { "regexp": { "title": "br.*" }}

    而不会匹配:

    { "regexp": { "title": "Qu.*" }} 
    { "regexp": { "title": "quick br*" }}

     

    展开全文
  • wildcard查询和prefix查询类似,也是一个基于词条的低级别查询。但是它能够让你指定一个模式(Pattern),而不是一个前缀(Prefix)。它使用标准的shell通配符:?用来匹配任意字符,*用来匹配零个或者多个字符 第...

    wildcard查询和prefix查询类似,也是一个基于词条的低级别查询。但是它能够让你指定一个模式(Pattern),而不是一个前缀(Prefix)。它使用标准的shell通配符:?用来匹配任意字符,*用来匹配零个或者多个字符

     

     

     

    第一步:通配符查询

    GET /my_index1/address/_search

    {

    "query": {

    "wildcard": {

    "postcode": "W?F*HW"

    }

    }

    }

     

     

     

    第二步:正则表达式查询

    GET /my_index1/address/_search

    {

    "query": {

    "regexp": {

    "postcode": "W[0-9].+"

    }

    }

    }

    这个正则表达式的规定了词条需要以W开头,紧跟着一个0到9的数字,然后是一个或者多个其它字符。

     

    展开全文
  • SpringMVC路径匹配中使用通配符

    千次阅读 2018-12-02 11:43:26
    @RequestMapping指定的路径也可以使用通配符*,表示任意字符。如下的处理器方法可以映射请求/antstyle/a,可以映射请求/antstyle/b,但是它不能映射请求请求/antstyle/a/b,因为它只能映射一级路径。 @...

    原文源自:http://elim.iteye.com/blog/2409316/

    @RequestMapping中指定的路径也可以使用通配符*,表示任意字符。如下的处理器方法可以映射请求/antstyle/a,可以映射请求/antstyle/b,但是它不能映射请求请求/antstyle/a/b,因为它只能映射一级路径。

    @RequestMapping("/antstyle/*")
    public Object testAntStyle() {
        return "antStyle";
    }

    通配符不是只能放在最后的,它也可以放在其它位置。下面的示例中就是把通配符放在中间位置,它可以映射请求/antstyle/a/bcd,也可以映射请求/antstyle/ab/bcd

    @RequestMapping("/antstyle/*/bcd")
    public Object testAntStyle() {
        return "antStyle";
    }

    通配符还可以匹配以某字符结束的路径。如下处理器方法可以映射/antstyle/后路径以bcd结尾的路径,比如/antstyle/abcd/antstyle/bcd等。

    @RequestMapping("/antstyle/*bcd")
    public Object testAntStyle() {
        return "antStyle";
    }

    通配符还可以匹配以某字符开始的路径。如下处理器方法可以映射/antstyle/abc/antstyle/abcd等。

    @RequestMapping("/antstyle/abc*")
    public Object testAntStyle() {
        return "antStyle";
    }

    一个星号只能匹配一级路径,如果需要匹配任意的多级路径则可以使用两个星号。如下处理器方法可以映射任何请求路径以/antstyle/开头的请求,如/antstyle/a/antstyle/a/b等。

    @RequestMapping("/antstyle/**")
    public Object testAntStyle() {
        return "antStyle";
    }

    一个星号与两个星号还可以一起使用,此时一个星号还是匹配任意字符,但是只能在当前层级,而两个星号还是可以匹配任意的层级,所以如下可以匹配/antstyle/abca/xxx/xxx等。

    @RequestMapping("/antstyle/abc*/**")
    public Object testAntStyle() {
        return "antStyle";
    }

    请求映射路径中使用了通配符时,也还是可使用路径变量的,它们是相互独立的。如下代码中我们就在请求路径中同时使用了路径变量和通配符。

    @RequestMapping("/antstylewithpathvariable/*/{path}/abc")
    public Object testAntStyleWithPathVariable(@PathVariable String path) {
        return "ant style with path variable, path is " + path;
    }

    同时存在路径变量和通配符匹配时的优先级关系

    当一个请求路径可以匹配多个处理器方法时,SpringMVC将优先匹配路径映射更精确的那个。

    • 拥有更少的路径变量和通配符的路径映射更精确。比如/hotels/{hotel}/*拥有一个路径变量和一个通配符,那么它会比/hotels/{hotel}/**更精确,会优先匹配,因为后者拥有一个路径变量和两个通配符。
    • 如果两个路径映射的通配符数量是一样的,则指定的信息更多那个路径会更精确,比如/hotels/abc*/hotels/*更精确。
    • 路径变量比通配符更精确。比如/hotels/{hotel}/hotels/*更精确。
    • 默认映射/**比其它所有的路径映射的优先级都低,比如/{a}/{b}就比它更精确。
    • 拥有两个通配符的路径映射比其它没有两个通配符的路径映射的优先级都低,比如/abc/**的优先级低于/abc/{a}

     

    展开全文
  • 通配符匹配

    千次阅读 2009-05-16 15:42:00
    问题描述:对于一个给定的词典S和一个包含通配符查询传a*b, 词典找出匹配a*b的所有串 1. 词典的结构: 对于匹配类,通常来说树结构是适用的2. 假设词典是树结构,切通配符在串的最后,即类似ab*这样,我们...
  • shell通配符匹配

    2019-10-08 09:18:59
    当输入包含特殊字符(元字符)的部分文件名时,shell可以生成与已有文件名匹配的文件名。这些字符称为通配符(wildcard)就像扑克牌的王牌一样无所不能。包含特殊字符的文件名称为模糊文件引用(ambiguous file ...
  • 我们最近的一个项目,我们的客户要求一个搜索字段,该字段可以搜索名字,姓氏和电子邮件地址,唯一的通配符是星号“ *”,表示部分匹配。 听起来很简单,但它使我们陷入了混乱。 我们的项目,我们将QueryDSL...
  • linux文件名匹配——通配符

    千次阅读 2019-03-19 19:39:04
    3 实例背景:linux使用过程,经常需要查找文件,对命令通配符pattern和正则表达式的区分不是很清楚。有必要好好研究一下。 回到顶部1 扫盲 1.1 通配符和正则表达式 当使用命令行时,有很多时间都用来查找...
  • 字符串 通配符匹配

    千次阅读 2019-02-27 15:52:27
    通配符匹配通配符 ? 表示可以替换一个任意字符 通配符 * 表示可以替换一个 长度任意的字符串 或者替换空 a*b? 可以匹配: acdbfdbf abc 现给定通配字符串s1 判断s2 是否满足匹配 思路:采用动态规划 dp[i][j]...
  • 简单研究了一下es之后,发现将字段类型指定为keyword或查询字段加上.keyword,然后再通过*实例模糊匹配,如下面查询,就可以实现类似LIKE ‘%关键字%’的搜索。 GET /my_index/_doc/_search { "query": { ...
  • 通配符匹配实现方法

    2020-07-01 23:30:17
    '和'*'的通配符匹配。 '?' 可以匹配任何单个字符。 '*' 可以匹配任意字符串(包括空字符串)。 s可能为空,且只包含从a-z的小写字母。 p可能为空,且只包含从a-z的小写字母,以及字符?和*。 来源:力扣(LeetCode...
  • 通配符匹配之三种解法

    万次阅读 2020-04-25 19:10:44
    通配符匹配之三种解法题目描述题目分析递归解法python 代码动态规划解法python代码回溯法python代码   这是leetcode上一道很棒的题目,告诉我一个道理,抓不住问题的关键,再优化也只是徒劳。这个题目略微有点难,...
  • DOS/Windows的文件名通配符,比如:*.txt,?...上次介绍了一个正则表达式的方法,这次自已写一个通配符匹配算法,一个函数就OK了(ANSI C的)。 一、算法原理 *号代表任意字符, ?号代表一个字符 int WildCharMatc
  • AC自动机通配符匹配

    千次阅读 2014-01-20 20:48:32
    计算机(软件)技术通配符可用于代替字符。 通常地,星号“*”匹配0个或以上的字符,问号“?”匹配1个字符。(wiki百科) 今天做Leetcode上的一道题时不会做,网上查到了这么一种做法,当年打比赛的时候都...
  • Servlet通配符匹配原则

    千次阅读 2017-08-31 16:01:25
    servlet容器匹配规则既不是简单的通配,也不是正则表达式,而是特定的规则。所以不要用通配符或者正则表达式的匹配规则来看待servlet的url-pattern。Servlet 2.5开始,一个servlet可以使用多个url-pattern规则,...
  • 10 正则表达式匹配 ...匹配应该覆盖整个字符串 (s) ,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。 示例 1: 输入:...
  • Kibana 通配符查询

    千次阅读 2019-03-04 23:24:22
    WildcardQuery(通配符查询) 录入查询参数:name:lis* *可以代替多个字符 录入查询参数:name:lis? 一个?号指代一个占位符 录入查询参数:name:lis?? 两个??号可以指代两个占位符 重点:*号可以指代多...
  • 文件名通配符匹配算法

    千次阅读 2006-09-09 03:44:00
    什么是文件名通配符如何...的模型就等于一个字符串判断是否匹配,只要给定字符串,查找含有?的字符串就行了,而字符串查找字符串就是用indexOf.只不过现有的indexOf,不知道?就代表任意字符,所以需要自己动手改写
  • mysql 的like查询有两个通配符 % 和 _,这两个在查询的时候会把不需要的结果查询出来,怎么处理? 1.问题描述 模糊查询语句如下: select name from table where name like '%字符串%'; 一般我们会用查询的字符串...
  • 2、确定公共前缀对应的通配符在通配符中,与前缀中不变的位,对应的写0;在通配符中,与前缀中变化的位,对应的写1;例如:10.10.1.010.10.2.010.10.0000 00xx.0 --> 上面2个路由的公共部分 ; 0000 0011.0 --...
  • 单字符匹配通配符为半角下划线”_”,它匹配单个出现的字符,以任意字符开头,剩余部分为”erry”:  select * from T_Employee where FName like ‘_erry’ (3) 多字符匹配通配符为半角百分号”%”,...
  • 敏锐的读者可能已经发现到目前为止,介绍的查询都是整个词条层面进行操作的。匹配的最小单元必须是一个词条。你只能找到存在于倒排索引(Inverted Index)的词条。 但是如果你想匹配词条的一部分,而不是整个...
  • 字符串匹配通配符*与单个匹配

    千次阅读 2019-05-06 14:45:26
    //--SIndex==s.length(),字符串s已经遍历完成,字符串p剩下的部分必须都为*,否则返回false while(PIndex () && p[PIndex] == '*'){ PIndex++; } if(PIndex == p.length()){ return true; } else{ return ...
  • GEEK编程练习— —通配符匹配

    千次阅读 2016-06-06 17:49:50
    ’和’*’组成的通配符匹配功能。 1) ‘?’匹配任意单个字母。 2) ‘*’匹配任意字母序列,包括空序列。 3) 输入的字符串要整体覆盖,不能部分覆盖。输入aa a aa aa aaa aa aa * aa a* ab ?* aab c*a*b aab *b...
  • Access的字符串比较使用通配符

    千次阅读 2014-02-27 11:04:34
    内置模式匹配提供了一个功能丰富的工具用于比较字符串。...字符列表]不字符列表的任意单字符可以使用用方括号([])括起的一个字符或一组字符(字符列表)来匹配表达式的任意单字符,并且字符列表
  • SQL 语句通配符

    千次阅读 2014-11-28 16:27:48
    SQL 语句通配符 通配符: 通配符 描述 示例 % 包含零个或更多字符的任意字符串。 WHERE title LIKE '%computer%' 将查找处于书名任意位置的包含单词 computer 的所有书名。
  • 字符串通配符匹配算法

    千次阅读 2008-11-11 12:11:00
    字符串通配符匹配算法如何实现带有?*通配符的字符串(string)...的模型就等于一个字符串判断是否匹配,只要给定字符串,查找含有?的字符串就行了,而字符串查找字符串就是用indexOf.只不过现有的indexOf,不知道?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,967
精华内容 35,586
关键字:

在部分匹配查询中关于通配符