Regular Expression - Syntax
-
Hallo Leute,
ich habe folgendes Problem.
Ich arbeite mit der Software List and Label von Combit.
Diese verfügt über 2 RegEX Funktionen(Siehe unten).Die Problemstellung:
Ich erhalte einen String von ca. 50 Zeichen, dieser besteht weitesgehend aus Zahlen. Da allerdings auch Zeichen vorkommen können, möchte ich diese rausfiltern.
Bsp.:
a31257812u89a899017217821281001018291xasw$$a
001257812u89a89901721782128asdfghjklödertzu4Nun habe ich folgenden RegEx benutzt " [0-9]+ ". Diese funktioniert aber nicht mit der (1) genannten Funktion.Mir wird der erste Teilabschnitt zurückgegeben.
Nun möchte ich alle nicht-numerischen Zeichen (![0-9]) durch ein "" ersetzten. Dazu wäre folgende Funktion imstande: RegExSubst (2). Allerdings finde ich irgendwie keine Verneinung einer möglichen Regular Expression.
Ich glaube, die ~ (Tilde) ist eine Verneinung:
Also wäre folgender RegEx richtig um alle nicht numerischen Zeichen herauszufiltern bzw. diese mittels Funktion (2) zu ersetzen?
~[0-9]+
Vielen Dank
Die Regular Expression entspricht dabei der Pearl 5 Syntax, sowie in den meisten Details der Regular Expression-Syntax der Visual Basic Scripting Engine.
(1)
RegExMatch()
Gibt den einen Teil der Zeichenkette zurück, der der Regular Expression entspricht oder die Gruppe entsprechend dem 3. Parameter.Parameter:
Zeichenkette
Zeichenkette
NumberRückgabewert:
ZeichenketteBeispiele:
RegExMatch$ ("1234xyz5678", "[0-9]+") Ergebnis: "1234"(2)
RegExSubst()Ersetzt die Teile des ersten Arguments, bei denen der reguläre Ausdruck zutrifft, durch einen neuen Wert.
Parameter:
String
die zu überprüfende Zeichenkette
String
regulärer Ausdruck
String
Ersetzungsausdruck (kann "\0" für den gesamten Match, oder "\1“… "\9“ für die entsprechende Gruppe enthalten
Boolean
(optional) Gibt an, ob nur das erste Vorkommen ersetzt werden soll. Voreinstellung: FalseRückgabewert:
ZeichenketteBeispiel:
RegExSubSt("1234xyz6789","[0-9]+", "a") Ergebnis: "axyza“ RegExSubst("1234xyz6789","[0-9]+","a",True) Ergebnis: "axyz6789"
-
zuckerlie schrieb:
Nun möchte ich alle nicht-numerischen Zeichen (![0-9]) durch ein "" ersetzten. Dazu wäre folgende Funktion imstande: RegExSubst (2). Allerdings finde ich irgendwie keine Verneinung einer möglichen Regular Expression.
Ich glaube, die ~ (Tilde) ist eine Verneinung:
Also wäre folgender RegEx richtig um alle nicht numerischen Zeichen herauszufiltern bzw. diese mittels Funktion (2) zu ersetzen?
~[0-9]+
Nein, eher sowas in der Art:
echo 123abc456def | perl -pe 's/[^0-9]+//g' 123456
(Ohne mir jetzt die gepostete Doku genauer angesehen zu haben.)