gpt4 book ai didi

regex - Neo4j 不区分大小写的正则表达式中的符号

转载 作者:行者123 更新时间:2023-12-01 11:32:53 24 4
gpt4 key购买 nike

我正在尝试匹配的某些用户节点中存储电子邮件地址,但是 (?i) 不区分大小写的选项在 + 加在邮件地址中。我用这些来测试,例如 john+business@doe.com

设置测试节点:

CREATE (uWithoutSymbol:USER {
email: 'john@doe.com'
})
CREATE (uWithSymbol:USER {
email: 'john+business@doe.com'
})

Cypher 查询:

MATCH (u:USER)
// This works
WHERE u.email =~ '(?i)john@doe.com'
RETURN u

MATCH (u:USER)
// This returns nothing
WHERE u.email =~ '(?i)john+business@doe.com'
RETURN u

我尝试使用不区分大小写的 unicode 代码:(?ui),但也没有成功。有什么想法吗?

最佳答案

加号“+”在正则表达式中有特殊含义;逃避它:

WHERE u.email =~ '(?i)john\\+business@doe.com'

加号表示“一个或多个上一个术语”,因此您的尝试将匹配 "johnbusiness@doe.com""johnnnnbusiness@doe.com".

从技术上讲,您也应该转义该点:

WHERE u.email =~ '(?i)john\\+business@doe\.com'

因为不转义点,它将匹配那里的任何字符,例如它将匹配 "john+business@doeAcom""john+business@doe#com" 也是。

感谢 @Stefan用于指出为正则表达式创建单个文字反斜杠所需的双反斜杠

关于regex - Neo4j 不区分大小写的正则表达式中的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30750585/

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