Neo4j中某些特殊字符的大小写不区分大小写的正则表达式搜索don';似乎不匹配
对于不区分大小写的正则表达式搜索,在Neo4j中,像ü和Ü或ł和Ł这样的字符似乎被视为完全独立的字符 以下密码应返回节点,但不返回:Neo4j中某些特殊字符的大小写不区分大小写的正则表达式搜索don';似乎不匹配,neo4j,Neo4j,对于不区分大小写的正则表达式搜索,在Neo4j中,像ü和Ü或ł和Ł这样的字符似乎被视为完全独立的字符 以下密码应返回节点,但不返回: CREATE (t:Thing { name: "Łomza Überbrew" }) MATCH (t:Thing) WHERE t.name=~'(?i)łomza überbrew' RETURN t 这是Neo4j所期望的吗?使用Neo4j Enterprise-2.1.2 谢谢您需要使用不区分大小写的unicode正则表达式,而不是只适用于ascii字
CREATE (t:Thing { name: "Łomza Überbrew" })
MATCH (t:Thing) WHERE t.name=~'(?i)łomza überbrew' RETURN t
这是Neo4j所期望的吗?使用Neo4j Enterprise-2.1.2
谢谢您需要使用不区分大小写的unicode正则表达式,而不是只适用于ascii字符的不区分大小写正则表达式。使用
(?ui)
代替(?i)
:
哎呀。我没有一个解决方案给你,但这似乎可能涉及unicode魔术。一个相关的问题可能是您的常量字符串的unicode风格/编码是什么,neo4j如何解释它,以及您对数据库中的字符串使用什么字符编码。在unicode中,“大写”和“小写”的概念可能会变得怪异。我在找这个。非常感谢。
CREATE (t:Thing { name: "Łomza Überbrew" })
MATCH (t:Thing) WHERE t.name=~'(?ui)łomza überbrew' RETURN t