gpt4 book ai didi

regex - 无法识别的字符转义 '-' | Elasticsearch

转载 作者:行者123 更新时间:2023-12-02 22:18:48 26 4
gpt4 key购买 nike

我正在尝试使用以下条件创建正则表达式:“或 maslo 直到空格、破折号或行尾,或者以 mas 开头,然后是从 1 到任何字符无穷大,空格或破折号除外”。

{
"regexp": {
"name": {
"value": "(maslo( |-|$)|mas[^ \-]+)"
}
}
}

这个表达式 [^\-] 应该是正确的,根据 Regexp Query Documentation ,段落“字符类”,最后一行,它说:

[^abc\-] # any character except '-' or 'a' or 'b' or 'c'

但我收到错误消息:

{
"type": "json_parse_exception",
"reason": "Unrecognized character escape '-' (code 45)\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@2a7b147b; line: 8, column: 47]"
}

我错过了什么吗?感谢您的任何建议。

最佳答案

您可以将连字符放在字符类的开头,以避免在 ES 正则表达式中将其转义:

"(maslo([- ]|$)|mas[^- ]+)"
^ ^

否则,您将需要使用双反斜杠,因为单个反斜杠用于定义常规字符串转义,而文字反斜杠(正则表达式转义)是使用两个连续的反斜杠形成的。

在 ES regex 文档中,示例中只使用了一个反斜杠,因为这些模式是以文字形式编写的,而不是字符串文字。

关于regex - 无法识别的字符转义 '-' | Elasticsearch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53317609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com