2017-01-10 16 views
0

csvファイルには、1つの列に「2016-12-01T00:00:00 + 01」のような日付形式または整数などの異なる値が含まれています。loadCSV正規表現による条件付き処理(Syntaxproblem)

私の考えは、if-else文のようなスイッチを使って日付をUNIXのタイムスタンプにするか、まったく値を変更しないようにするために、loadCSVを実行していました。その日付かどうかを検出するには、私は正規表現を使用しようとしました。

私は、これはエラーをスロー次の文

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///xxx.csv" AS row 
FIELDTERMINATOR ';' 
FOREACH(n IN (CASE row.dataValue=~ "/(\d{4})-(\d{2})-(\d{2})T(\d{2})\:(\d{2})\:(\d{2})[+-](\d{2})\" THEN [] else [row.dataValue= apoc.date.parse(row.dataValue, "s", "yyyy-mm-dd'T'HH:mm:ss+01")] END) | 
CREATE (d:datapoint {data: row.dataValue}) 
return d 

を思い付いた: 無効な入力「D」:期待...正規表現の最初の文字Dを参照してくださいようです。

a)は何だろう正しい構文

b)は、ステートメントは、私が欲しいものを得るために、まったく正しいですか?

どのようなヒントもありがとうございます。

答えて

1

\ dの代わりに[0-9]を使用してみてください。私はそれがあなたの問題であるかどうかわかりませんが、あなたの正規表現はうまくいきます(最初のスラッシュを最初から除いています)。問題を修正し、実際

[0-9]{4}-[0-9]{2}-[0-9]{2}T(?:[0-9]{2}:){2}[0-9]{2}[-+][0-9]{2} 

https://regex101.com/r/fqydFq/1

+0

おかげで、:

はこのような何かを試してみてください。また、リンクは非常に有用で、didntはそのツールを知っていた!驚くばかり。 – Balael

関連する問題