Basic und Reguläre Ausdrücke
Moderator: Moderatoren
-
- **
- Beiträge: 22
- Registriert: Do, 03.08.2006 21:10
Basic und Reguläre Ausdrücke
Hallo zusammen,
in einer Tabellenzelle steht ein String, den ich Stück für Stück abarbeiten will.
Er sieht beispielsweise so aus:
2ac10def1g
, wobei er folgendermaßen zerlegt werden soll:
2a - c - 10d - e -f - 1g
Als Regulärer Ausdruck ausgeschrieben sähe das so aus:
Finde keine/eine/mehrere Ziffern, gefolgt von einem Buchstaben und speichere die in einer Variablen, bearbeite diese und dann immer weiter so, bis der String zuende ist.
In Perl würde ich ja jeweils einfach $& nehmen (das ist der Teil der RegEx der "gematcht" hat) und bearbeiten und dann weiter zum nächsten Treffer gehen, nur weiß ich nicht, was dieses $& unter Starbasic ist.
Das Programmier-Handbuch spricht von "einem TextRange-Objekt", das zurückgegeben wird. Ich glaube, genau das ist das, was ich haben will - nur wie komme ich da dran?
in einer Tabellenzelle steht ein String, den ich Stück für Stück abarbeiten will.
Er sieht beispielsweise so aus:
2ac10def1g
, wobei er folgendermaßen zerlegt werden soll:
2a - c - 10d - e -f - 1g
Als Regulärer Ausdruck ausgeschrieben sähe das so aus:
Finde keine/eine/mehrere Ziffern, gefolgt von einem Buchstaben und speichere die in einer Variablen, bearbeite diese und dann immer weiter so, bis der String zuende ist.
In Perl würde ich ja jeweils einfach $& nehmen (das ist der Teil der RegEx der "gematcht" hat) und bearbeiten und dann weiter zum nächsten Treffer gehen, nur weiß ich nicht, was dieses $& unter Starbasic ist.
Das Programmier-Handbuch spricht von "einem TextRange-Objekt", das zurückgegeben wird. Ich glaube, genau das ist das, was ich haben will - nur wie komme ich da dran?
-
- **
- Beiträge: 22
- Registriert: Do, 03.08.2006 21:10
Ich möchte, um's mal in Perl zu sagem, etwa so etwas:
Code: Alles auswählen
while ($string =~ m/([0-9]*[a-z])/g) {
print "Match gefunden: $&\n"; # gibt gefundenen Match aus
$string =~ s/$1//; # schmeißt alles was vor dem Match war incl. demselben weg
}
Zuletzt geändert von schrödingerkatze am Do, 03.08.2006 22:20, insgesamt 1-mal geändert.
-
- **
- Beiträge: 22
- Registriert: Do, 03.08.2006 21:10
Danke für die Antwort, aber die RegEx habe ich schon:
Mein Problem ist, dass ich nicht weiß, wie ich den Match dann in eine Variable bekomme, die ich dann weiterverarbeiten kann.
Code: Alles auswählen
[0-9]*[a-z]
Hallo
Was soll bei der Weiterverarbeitung geschehen ? - Soll daraus eine Funktion entstehen ?
Wenn es in diese Richtung geht, ich hab vor einiger Zeit mal an Lösungen gearbeitet, aus chemischen Summenformeln (zb. H2O oder CaCO3) das relative Molekulargewicht zu ermitteln. Zum Schluss hatte ich 3 Lösungen :
1. nur über Tabellenfunktionen
2. über aufgezeichnete (und modifizierte) 'suchen und ersetzen-Makros'
3. eine richtige Makro-funktion mit sehr vielen Zeilen Code (die ich aber nicht selber geschrieben habe)
Falls du daran interessiert bist sag Bescheid.
Gruß Karo
Was soll bei der Weiterverarbeitung geschehen ? - Soll daraus eine Funktion entstehen ?
Wenn es in diese Richtung geht, ich hab vor einiger Zeit mal an Lösungen gearbeitet, aus chemischen Summenformeln (zb. H2O oder CaCO3) das relative Molekulargewicht zu ermitteln. Zum Schluss hatte ich 3 Lösungen :
1. nur über Tabellenfunktionen
2. über aufgezeichnete (und modifizierte) 'suchen und ersetzen-Makros'
3. eine richtige Makro-funktion mit sehr vielen Zeilen Code (die ich aber nicht selber geschrieben habe)
Falls du daran interessiert bist sag Bescheid.
Gruß Karo
-
- **
- Beiträge: 22
- Registriert: Do, 03.08.2006 21:10
Danke für die Hilfe, in de.comp.office-pakete.staroffice habe ich eine passende Lösung bekommen: Einfach den Rest-String Zeichen für Zeichen durchgehen und mit
prüfen, ob Zahl; falls ja: weitermachen, falls nein: Treffer und anderweitig verarbeiten.
Code: Alles auswählen
IsNumeric
prüfen, ob Zahl; falls ja: weitermachen, falls nein: Treffer und anderweitig verarbeiten.