Quantifier Reguläre Ausdrücke

Hallo,

kann man in regulären Ausdrücken die max Anzahl von aufeinanderfolgende Zeichen definieren, als Beispiel:

012345-1234567 dann würde man für den ersten Teil definieren 6*[0-5] und für den zweiten Teil 7*[1-7]

Danke und Gruß



test=*# select '012345-1234567' ~ '^[0-5]{6}-[1-7]{7}$';
 ?column?
----------
 t
(1 Zeile)

PostgreSQL: Documentation: Manuals: PostgreSQL 8.3: Pattern Matching

Andreas

Neue Frage zu Regexp :wink:

Ist es möglich einen Spaltennamen in Regexp zu integrieren?

Beispielt

Select wert1, wert2 FROM tabelle1 WHERE wert1 ~ ‘[0-9]{lenght(wert2),}’

Das wird Du wohl als 2 Bedingungen schreiben müssen.

test=*# select * from regex;
 wert1 | wert2
-------+-------
 13    | 123
 13    | 1234
 13    | 12
 123   | 123
 1234  | 123
(5 rows)

test=*# select * from regex where wert1 ~ '^[0-9]*$' and length(wert1) = length(wert2)+1;
 wert1 | wert2
-------+-------
 1234  | 123
(1 row)

Oder als plpgsql-Funktion und dynamischem SQL und dann execute drauf.

Andreas