Laden...

Regular Expression Alle Zahlen

Erstellt von Taladan vor 10 Jahren Letzter Beitrag vor 10 Jahren 3.378 Views
Taladan Themenstarter:in
582 Beiträge seit 2008
vor 10 Jahren
Regular Expression Alle Zahlen

verwendetes Datenbanksystem: Sybase

Hallo,

ich möchte gerne ein Regularexpression, der mir alle Zahlen einer Zeichenkette ausgibt in einem String. Aber ohne Array.

Beispiel
0147 / 4589 -> 01474589
1567 0789 458 -> 15670789458
16789 -> 16789

ich habe schon herum probiert, kenne mich aber nicht gut mit Regex aus. Ich bekomme immer nur den ersten Block.

Gruß dat Tala

16.830 Beiträge seit 2008
vor 10 Jahren
Taladan Themenstarter:in
582 Beiträge seit 2008
vor 10 Jahren

Hallo,

hilft mir leider nicht weiter. Habe ich schon überflogen.

Gruß dat Tala

D
615 Beiträge seit 2009
vor 10 Jahren

Hallo Taladan

Ich benutze Regex auch relativ selten, daher bin ich darin auch nicht so bewandert.
Als kleine Hilfe benutze ich Expresso.

Diese App macht das Erstellen und Testen von Regex ausdrücken zum Kinderspiel 😉

Beste Grüsse

Diräkt

16.830 Beiträge seit 2008
vor 10 Jahren

Habe ich schon überflogen.

Du bist jetzt lang genug hier, Du kennst [Hinweis] Wie poste ich richtig? Punkte 4*. Die gelten auch für Dich.
Und das, was Du vor hast, kriegt man raus, wenn man sichs 10 Min richtig anschaut.

S
417 Beiträge seit 2008
vor 10 Jahren

Für so eine triviale Aufgabe würde ja auch String.Replace reichen.
Mit Regex z.B. so, um alle nicht-Zahlen zu entfernen:

var s = Regex.Replace("1567 / 0789 458", @"[^\d]", "");
Taladan Themenstarter:in
582 Beiträge seit 2008
vor 10 Jahren

Hi,

so trivial wie ihr es darstellt ist es nicht.

Denn. Es muss in einem SQL-Select verwendet werden ohne Replacefunktion. Die Funktion heißt REGEXP_SUBSTR. Ich habe also nur das Find zur Verfügung. Ich kann an der Stelle auch keine eigene Funktion einbauen, da die Rechte für die ausführenden dies nicht erlauben.

Die RegExp_Substr verhält sich wie eine normale RegEx-Find Methode, die allerdings nur das erste Element aus dem Sucharray zurück liefert. Dadurch erhalte ich ein "\d" nur immer den ersten Block (s.o.).

Gruß dat Tala

W
955 Beiträge seit 2010
vor 10 Jahren

Hi,

Es muss in einem SQL-Select verwendet werden ohne Replacefunktion. Die Funktion heißt REGEXP_SUBSTR Warum sagst Du das nicht gleich, woher sollen wir das wissen?
Ist das Oracle? Vllt


SELECT REGEXP_SUBSTR(mycolumn, '[0-9]+')

?
Du hast es gerade selber geschrieben das Du nur den ersten block findest.
Sind die unerwünschten Zeichen zwischen den Ziffern nur wenige verschiedene? Also vllt nur ' ', ',' ,'/'? Dann könnte man sie mit REPLACE herausfiltern


SELECT REPLACE(REPLACE(mycolumn, ' ', ''), '.', '') ...

?

S
417 Beiträge seit 2008
vor 10 Jahren

Wie ich schon oben geschrieben habe, würde ich es mit Regex Replace lösen.
Da du scheinbar Sybase verwendest (wie im ersten Beitrag genannt), wäre das hier wohl eine Möglichkeit dazu: http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc01612.0500/doc/html/emc1296250530909.html
Evtl. ist mein code von oben so übertragbar:

regexp_replace(DEIN_SPALTENWERT, '[^\d]', '')
Taladan Themenstarter:in
582 Beiträge seit 2008
vor 10 Jahren

hi,

es gibt leider keine Replace Variante für Regularexpressions bei Sybase 12. Daher fällt diese Option flach. Ich vermute es geht ein Weg an einer Funktion vorbei.

Gruß dat Tala