2017-11-04 1 views
0

Ich bin auf der Suche nach drei Werte und ersetzen sie durch Regex ohne genau zu wissen, was dahinter ist als eine grobe Idee. Zum BeispielPsql Lookbehind Regex für mehrere Wert Ersatz

word [1,2,3]

232 word[1 , 2, 3]

1d1 word [1,2, 3]

In beiden Fällen bin ich auf der Suche ausschließlich übereinstimmen und ersetzen 1, 2 und 3.

Wie ich es verstehe, Lookbehind doesn Unterstütze unbekannte Längen.

Gibt es eine elegante Möglichkeit, dies zu tun?

Es wäre auch gut, zu wissen, wie diese outwith Sql zu tun, wo conditionals ist keine Option

Dank.

Edit:

Ich denke, ich WHERE match_string ~ 'word' in einem Umfang nutzen können.

+0

Wenn Ihre Regex-Engine [positive Lookbehinds] unterstützt (https://www.regular-expressions.info/lookaround.html), dann vielleicht [diese Regex] (https://regex101.com/r/7tdTIB/1/) '(? <= \ [) (\ d) \ s?, \ s? (\ d), \ s? (\ d) (? = \])' könnte Ihnen helfen –

+0

https: //www.postgresql .org/docs/9.1/static/plpgsql-control-Strukturen.html –

+0

Bedingungen sind verfügbar, wenn Sie die Logik in eine Funktion setzen. Mir ist nicht klar, warum du entweder Konditional brauchst oder zurückblickst. –

Antwort

0

Sie können eine Funktion schreiben, um zu verarbeiten, wie Sie möchten. Zur Kasse postres control structures

Sie können jeweils eine verarbeitete Zeile zurückgeben oder eine Funktion zur Bearbeitung Ihres Feldes ausführen? um den richtigen Text zurückzugeben. zB wähle myfix (poordatafield) aus etwas;

Es gibt Leistungsaspekte für die Verwendung von return next.