gpt4 book ai didi

regex - Lucene 正则表达式中的单词边界

转载 作者:行者123 更新时间:2023-11-29 02:51:51 25 4
gpt4 key购买 nike

我想在 Elasticsearch 中使用 word boundaries 进行正则表达式查询, 但它看起来像 Lucene regex engine不支持 \b。我可以使用哪些解决方法?

最佳答案

在 ElasticSearch 正则表达式中,没有直接等同于单词边界的东西。初始 \b 类似于 (^|[^A-Za-z0-9_]) 如果 word 以单词 char 开头,如果 word 以单词 char 结尾,则尾随 \b 类似于 ($|[^A-Za-z0-9_]) .

因此,我们需要确保在word 前后或string 的开头/结尾有一个非word 字符。由于正则表达式默认是锚定的,我们需要做的就是让 [^A-Za-z0-9_] 在字符串的开始/结束处成为可选的,就是在 and用可选的分组结构包装:

(.*[^A-Za-z0-9_])?word([^A-Za-z0-9_].*)?

详情

  • (.*[^A-Za-z0-9_])? - 字符串开头或任何 0+ 个字符(但换行字符,否则使用 (.|\n)*) 然后是除单词 char 之外的任何字符(基本上,它是字符串的开头,后跟组内模式的 1 次或 0 次出现)
  • word - 一个词
  • ([^A-Za-z0-9_].*)? - 任意字符的可选序列,但单词 char 后跟任何 0+ 个字符,后跟字符串位置的结尾(隐含在 Lucene 正则表达式中)。

关于regex - Lucene 正则表达式中的单词边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48517856/

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