Использование регулярного выражения в neo4j

Я пытаюсь использовать регулярные выражения в cypher WHERE предложения. Я хотел бы сопоставить узлы, в которых свойство узла Text содержит определенное слово, как слово, а не его часть.

MATCH (n:) WHERE n.Text =~ 'bwordb' return n;

этот запрос ничего не возвращает, хотя узлы, содержащие слово "word", существуют в моем графике. Позволяет ли cypher использовать стандартные регулярные выражения? Существуют ли ограничения в его реализации регулярного выражения?

1 ответов


в вашем запросе было 3 проблемы:

  1. (n:) должно быть (n), так как вы не указываете метку.
  2. обратно слеши должны быть экранированы обратной косой черты.
  3. регулярное выражение должно соответствовать весь значение свойства (я предполагаю, что ваше тестовое значение было довольно длинным).

этот запрос должен работать:

MATCH (n)
WHERE n.Text =~ '.*\bword\b.*'
RETURN n;

см. здесь документацию, связанную с регулярные выражения в СУБД Neo4j