Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 弹性搜索正则表达式以从右侧获取最后7位数字_Regex_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Pattern Matching_Sense - Fatal编程技术网 elasticsearch,pattern-matching,sense,Regex,elasticsearch,Pattern Matching,Sense" /> elasticsearch,pattern-matching,sense,Regex,elasticsearch,Pattern Matching,Sense" />

Regex 弹性搜索正则表达式以从右侧获取最后7位数字

Regex 弹性搜索正则表达式以从右侧获取最后7位数字,regex,elasticsearch,pattern-matching,sense,Regex,elasticsearch,Pattern Matching,Sense,我有6767234342334444443249444格式的索引数据。我需要一个正则表达式来设置anlayser右起最后7位的模式。Ex输出:2494444。我们尝试过的模式[0-9]{7}不起作用。在ElasticSearch中,模式为。这意味着,您不能依赖于部分匹配,您需要匹配整个字符串并捕获最后连续的7位数字 使用 在哪里 *-将匹配除换行符以外的任何0+字符(尽可能多),然后将回溯以匹配 ([0-9]{7})-将7位数字放入捕获组1 如果在正则表达式模式中定义了捕获组,则Sense插

我有6767234342334444443249444格式的索引数据。我需要一个正则表达式来设置anlayser右起最后7位的模式。Ex输出:2494444。我们尝试过的模式[0-9]{7}不起作用。

在ElasticSearch中,模式为。这意味着,您不能依赖于部分匹配,您需要匹配整个字符串并捕获最后连续的7位数字

使用

在哪里

  • *
    -将匹配除换行符以外的任何0+字符(尽可能多),然后将回溯以匹配
  • ([0-9]{7})
    -将7位数字放入捕获组1

如果在正则表达式模式中定义了捕获组,则Sense插件将返回捕获的值,因此无需执行额外的提取工作(或组访问工作)。

在ElasticSearch中,模式为。这意味着,您不能依赖于部分匹配,您需要匹配整个字符串并捕获最后连续的7位数字

使用

在哪里

  • *
    -将匹配除换行符以外的任何0+字符(尽可能多),然后将回溯以匹配
  • ([0-9]{7})
    -将7位数字放入捕获组1


如果在正则表达式模式中定义了捕获组,则Sense插件将返回捕获的值,因此,不需要进行额外的提取工作(或组访问工作)。

不确定是否可以访问捕获组,但这似乎是您唯一的选择-
\[.*([0-9]{7})\]
。请让我知道这是否对你有效。我尝试通过sense插件创建Analyzer。但不接受反斜杠获取错误。这就是我正在尝试的。POST/telephone{“settings”:{“analysis”:{“my_email_analysis”:{“type”:“pattern”,“pattern”:“[.*([0-9]{7})],“lowercase”:true}}}}}}}}如果字符串中没有
[
]
,您可以尝试
*([0-9]{7})
。或者如果Sense插件没有锚定模式,那么使用
[0-9]{7}$
Wiktor Stribiżew-尝试使用。*([0-9]{7})这个模式,它会得到最后7位直到空格,但是如果我有超过7位直到空格,我就不会得到任何结果。例如:“文本”:“8765432123 2342234 1234564 899878”。输出:{“标记”:[{“标记”:“899878”,“开始偏移量”:27,“结束偏移量”:34,“类型”:“单词”,“位置”:0}]}如果我在最后一个数字8787上再添加一个数字,则响应为空。@Wiktor Stribiżew模式在online executor中工作,但当我尝试相同的感官插件时,它对elasticsearch不起作用*([0-9]{7}). 如果我添加的数字超过7位,analyze api将不返回任何标记。不确定您是否可以访问捕获组,但这似乎是您唯一的选择-
\[.*([0-9]{7})\]
。请让我知道这是否对你有效。我尝试通过sense插件创建Analyzer。但不接受反斜杠获取错误。这就是我正在尝试的。POST/telephone{“settings”:{“analysis”:{“my_email_analysis”:{“type”:“pattern”,“pattern”:“[.*([0-9]{7})],“lowercase”:true}}}}}}}}如果字符串中没有
[
]
,您可以尝试
*([0-9]{7})
。或者如果Sense插件没有锚定模式,那么使用
[0-9]{7}$
Wiktor Stribiżew-尝试使用。*([0-9]{7})这个模式,它会得到最后7位直到空格,但是如果我有超过7位直到空格,我就不会得到任何结果。例如:“文本”:“8765432123 2342234 1234564 899878”。输出:{“标记”:[{“标记”:“899878”,“开始偏移量”:27,“结束偏移量”:34,“类型”:“单词”,“位置”:0}]}如果我在最后一个数字8787上再添加一个数字,则响应为空。@Wiktor Stribiżew模式在online executor中工作,但当我尝试相同的感官插件时,它对elasticsearch不起作用*([0-9]{7}). 如果我添加的数字超过7位,analyze api不会返回任何标记。我还有一个问题要问你。上面的模式只有在我给出7位数以上的数据时才会得到结果。如果我有一个长度小于六位数的值,那么它不会返回。如果实际值长度小于7,是否需要更改模式以获得结果?似乎需要在
*
之后的模式中插入空格,然后将min参数引入限制(绑定)量词:
*([0-9]{1,7})
。这将获取空格后的1到7个最后数字。ex1:123,ex2:6757677687,ex3:123 1232。在这三个例子中,如果我使用这个模式,我需要得到输出。Ex1:123,Ex2:7677687,Ex3:1232。你能帮个忙吗?你是说字符串没有空格?好的,然后使用
*?([0-9]{1,7})
*?
是惰性的,它将在捕获组中保留1到7个数字。它选择7个数字以上的结果。我只需要得到7和以下。如果我有10个数字,那么应该忽略额外的3个数字。如果你看我之前的评论ex2:6757677687,输出是7677687。现在我实际得到的是7677687675。我得到的是两个代币而不是一个。我还有一个问题要问你。上面的模式只有在我给出7位数以上的数据时才会得到结果。如果我有一个长度小于六位数的值,那么它不会返回。如果实际值长度小于7,是否需要更改模式以获得结果?似乎需要在
*
之后的模式中插入空格,然后将min参数引入限制(绑定)量词:
*([0-9]{1,7})
。这将获取空格后的1到7个最后数字。ex1:123,ex2:6757677687,ex3:123 1232。在这三个示例中,如果我使用
.*([0-9]{7})