Brauche Hilfe bei Regex

Gast #3636127
Lesenswert?
• ▲
▼
Moin,

in unserer Firma werden Kabel mit AWG-Querschnitten wie folgt 
bezeichnet:

22 = AWG 22 Einzelleitung
2C22 = 2-adrige Leitung AWG 22 verdrillt, ungeschirmt
3C22s = 3-adrige Leitung AWG 22 geschirmt
8 = AWG 8 Einzelleitung
4C20s = 4-adrig AWG 20 geschirmt
RG142 = selbsterklärend

Über den Sinn und Unsinn dieser Kurzbezeichnungen kann man streiten, 
aber so ist es und damit muss ich leben.

Ich muss in einem Skript anhand der Querschnitte sortieren. Da es 
alphanumerisch natürlich nicht funktioniert, möchte ich gerne per Regex 
einen "Sortier-String" basteln. Den Sonderfall RG142 kann ich separat 
abfangen. Mir geht es darum, von rechts aus alphanumerische Zeichen zu 
ignorieren, dann aufeinanderfolgende Ziffern zurückzugeben und ab dem 
ersten alphanumerischen Zeichen wieder zu ignorieren.

Sprich 3C22s liefert 22.

Wer kann helfen?
Gast #3636182
Lesenswert?
• ▲
▼
Danke! Das ist aber sed, oder? Ich muss das innerhalb eines 
PostgreSQL-Statements anwenden, mittels SUBSTRING(spalte, 
'...regex...'). Funktioniert mit euren Lösungen bei mir leider nicht 
(gibt einen leeren String zurück).
Gast #3636657
Lesenswert?
• ▲
▼
Wenn Du bereits eine Datenbank hast, warum dann nicht einfach eine 
kleine Tabelle mit den beiden Spalten 'Bezeichnung' und 'Querschnitt' 
anlegen, Daten eintragen, eine Join auf beide Tabellen machen und nach 
Querschnitt sortieren? Dürfte deutlich einfache zu Pflegen sein als 
jedes Skript.
Gast #3636663
Lesenswert?
• ▲
▼
Oh Mann, natürlich war "nicht-numerisches" Zeichen gemeint statt 
alphanumerisches Zeichen.

Ich habe es jetzt dank eurer Hilfe hinbekommen. Eine Kombination der 
Lösungen von Jörg Wunsch und Yalu gefällt mir am besten:
1
SELECT SUBSTRING('2C22s', '(\d+)\D*$');
2
 substring
3
-----------
4
22
5
(1 row)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren