4

数値とプロパティを共有するノードがいくつかあります。reular式を使用してこのプロパティをフィルタリングしたいと思います。これはCypherクエリ言語を使用して可能ですか?

例:

A { num: 3 }
B { num: 12 }
C { num: 532 }
D { num: 1423 }

numプロパティに数字が含まれているすべてのノードを取得するにはどうすればよいですか3(A、C、およびDを返す必要があります)。のようなものを試しましn.num =~ '3'たが、エラーが発生します( " java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String)")

何か案は?

4

2 に答える 2

2

これを使用して、有効ではないタイプLongのプロパティにRegExpを適用しようとしています。ノードのプロパティを文字列として定義すると機能します。http://tinyurl.com/bqoq62qを参照してください。

それ以外の場合は、自動キャストのサポートが予定されているため、(Cypherの将来のバージョンでは)where (node.num+'') =~ '3'Longを使用してもこれを行うことができます。しかし今ではありません。

于 2012-09-11T21:30:55.270 に答える
0

暗号の内容(正規表現のようには見えません)についてはよくわかりませんが、必要な正規表現は次のようになります(中括弧をネストすることはできないと仮定します。可能であれば、正規表現はこれは不可能です)。

([A-Z]\s*\{[^\}]*num:\s*3\D[^\}]*\})

これは、単一の大文字に一致し、その後に開いた中括弧が続き、閉じた中括弧の前にnum:3があります。括弧のおかげで、後ですべてが記憶されます。

于 2012-09-11T18:46:23.870 に答える