Использование регулярного выражения в neo4j
Я пытаюсь использовать регулярные выражения в cypher WHERE
предложения. Я хотел бы сопоставить узлы, в которых свойство узла Text
содержит определенное слово, как слово, а не его часть.
MATCH (n:) WHERE n.Text =~ 'bwordb' return n;
этот запрос ничего не возвращает, хотя узлы, содержащие слово "word", существуют в моем графике. Позволяет ли cypher использовать стандартные регулярные выражения? Существуют ли ограничения в его реализации регулярного выражения?
1 ответов
в вашем запросе было 3 проблемы:
-
(n:)
должно быть(n)
, так как вы не указываете метку. - обратно слеши должны быть экранированы обратной косой черты.
- регулярное выражение должно соответствовать весь значение свойства (я предполагаю, что ваше тестовое значение было довольно длинным).
этот запрос должен работать:
MATCH (n)
WHERE n.Text =~ '.*\bword\b.*'
RETURN n;
см. здесь документацию, связанную с регулярные выражения в СУБД Neo4j