2

FirstName、LastName プロパティを持つユーザーのノードがあります。ここで、両方のサイトから両方のプロパティの値を検索したいと思います。説明させてください。

FirstName  LastName
---------  --------
Manish     Pal
Pal        Dharmesh
Rajpal     Yadav
sharma     shreepal

ここで、どのノードの名または姓に'pal'が含まれているかを検索したいと思います。このようなクエリを書きました。

START users=node(*) 
WHERE (users.FirstName =~ '(?i)pal.*' OR users.LastName =~ '(?i)pal.*') 
RETURN users;

それは私に2つのノードしか与えませんが、「pal」を含むすべてのノードが必要です

こうやってみると

START users=node(*) 
WHERE (users.FirstName =~ '(?i)*.pal.*' OR users.LastName =~ '(?i)*.pal.*') 
RETURN users;

次のエラーが表示されます。

「パターン構文例外」

メタ文字 ' ' がインデックス 4 (?i) の近くにぶら下がっています .ant. ^*

すぐに参照できるように、ここに例を設定しました。

ありがとう。

4

1 に答える 1

6

2 番目のクエリには、無効な正規表現構文が含まれています。私はあなたが意味すると思います:

START users=node(*) 
WHERE (users.FirstName =~ '(?i).*pal.*' OR users.LastName =~ '(?i).*pal.*') 
RETURN users

投稿のクエリとの違いに注意してください。

  • '(?i)*.pal.*'あなたの投稿で、そして
  • '(?i).*pal.*'上記のクエリで

アスタリスク*、私の前の式 [アスタリスク] がゼロを含む任意の回数出現する可能性があることを意味します。ただし(?i)、正規表現ではなく、実際の表現の大文字と小文字を区別しない修飾子にすぎません。私はあなたが意味したと思います.*。正規表現.は任意の文字に一致し、アスタリスクは任意の文字が任意の回数出現することを許可します。

'(?i).*pal.*'[大文字と小文字を区別しない] <任意の文字数><正確な文字列: "pal"><任意の文字数>

上記のクエリでは、次の 4 つの結果が返されました。

users.FirstName  | users.LastName
---------------------------------
sharma           | shreepal
Rajpal           | Yadav
Pal              | Dharmesh     
Manish           | Pal

私があなたのことを正しく理解していれば、それはあなたが望んでいたことです。

于 2013-08-02T11:51:23.870 に答える