Использование регулярного выражения в 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
