Elasticsearch正则表达式未行进,但正则表达式模式正确

时间:2018-08-16 11:38:49

标签: regex elasticsearch

"regexp": {
  "commonStructure": {
    "value": "[^>]*?[,<]PRP[,>][^\\<]*?\\s[^>]*?[,<]VERB[,>].*",
    "flags": "ALL"
  }
}

该模式正确,并且可以在js和python中使用

她是示例字符串

<PRP,PRON>{I} <VBD,VERB>{worked} <ADVPL,IN,ADP>{in} <NNP,PROPN>{London} <IN,ADP>{at} <ADVTMRI,RB,ADV>{first} <PUNCT>{,} <CC,CCONJ>{but} <PR,PRON>{it} <VBD,VERB>{was} <RB,ADV>{not} <JJ,ADJ>{easy} <TO,PART>{to} <VB,VERB>{make} <NN,NOUN>{money} <ADVPL,RB,ADV>{there} <PUNCT>{.}

在这种模式下,我要获取所有具有第一个[PRON]且下一个邻居是[VERB]

的记录。

请注意,在这种模式下,第一个[PRON]的情况下,我也可以传递单词{I}

1 个答案:

答案 0 :(得分:1)

Lucene regex引擎不支持常见的NFA regex速记字符类。

要匹配空格,您可以使用自己的方括号表达式,例如[ \t\r\n][ \f\n\r\t\v]

要匹配除<以外的任何字符,请使用[^<],不要转义<,因为它不是特殊的正则表达式字符。

因此,您可以使用

"[^>]*[,<]PRP[,>][^<]*[ \t\r\n][^>]*[,<]VERB[,>].*"