reguläre ausdrücke - hilfe benötigt

Hallo,

schon seit 2 stunden oder so versuchen wir hier einen string per regulären ausdruck zu finden, aber es will uns einfach nicht gelingen. vielleicht kann uns ja jemand weiterhelfen?

der string in dem gesucht wird sieht wie folgt aus

  • A bis Z
  • eine null und eine zweistellige zahl (10 - 99)
    oder
  • zwei nullen und eine einstellige zahl (1 - 9)

also beispiele wären:
A009
A010
B046
S001

jetzt möchte ich nur die „führenden nullen“ finden, also nicht die, die am ende stehen (bei der 10 am ende beispielsweise).

ich kann zwar danach suchen, ob ein ausdruck am ende steht, aber nicht, dass er NICHT am ende stehen soll.
weiß einfach nicht wie weiter…

july

Hallo July,

wir versuchen einen string per regulären ausdruck
zu finden, aber es will uns einfach nicht gelingen.

ich möchte nur die „führenden nullen“ finden, also nicht
die, die am ende stehen

Der Ausdruck ist simpel, wenn man das Problem
etwas vereinfacht:

der string in dem gesucht wird sieht wie folgt aus

  • ein A bis Z

[A-Z]{1}

  • gefolgt von einer null oder zwei nullen

0{1,2}

Also:

[A-Z]{1}0{1,2}

bzw. mit den speichernden Klammern ()

[A-Z]{1}(0{1,2})

um die gefundenen Nullen als Ergebnis abspeichern zu können.

Willst Du es doch etwas genauer, musst Du mit einem
„oder“ arbeiten:

  • ein A bis Z

[A-Z]{1}

(a) gefolgt von einer Null und einer 2-stelligen Ziffer,
die nicht mit 0 beginnt:

0{1}[1-9][0-9]

ODER

(b) gefolgt von zwei Nullen und einer 1-stelligen Ziffer
ungleich 0:

0{2}[1-9]

Also (mit speichernden () und nicht-speichernden (?:smile:
Klammern versehen):

[A-Z]{1}(?:frowning:?:frowning:0{1})[1-9][0-9])|(?:frowning:0{2})[1-9]))

Die gefunden Nullen befinden sich jetzt als Ergebnis in
der 1. Klammer für Fall (a) und in der 2. Klammer für
Fall (b).

Zum interaktiven Testen von regulären Ausdrücken kann
ich Dir übrigens wärmstens das folgende kostenlose Programm
empfehlen:

http://www.weitz.de/regex-coach/

Du wirst danach nicht mehr ohne arbeiten wollen :wink:

Gruß,
-Andreas.

Hallo Andreas,

vielen Dank für Deine Hilfe. Leider läßt sich mein Problem damit nicht lösen. Das liegt wohl daran, dass ich bisher keinen Weg gefunden hab, wie OpenOffice Substrings verwenden kann… Ich wollte dort mittels regulären Ausdruck ein Suchen und Ersetzen (bzw. Löschen) basteln. Ich möchte eben diese führenden Nullen aus den Strings löschen.

Also:

[A-Z]{1}0{1,2}

bzw. mit den speichernden Klammern ()

[A-Z]{1}(0{1,2})

Dieser Weg führt dazu, dass der Buchstabe samt führenden Nullen gefunden wird (und damit gelöscht beim Ersetzen mit nem leeren String)

Also (mit speichernden () und nicht-speichernden (?:smile:
Klammern versehen):

[A-Z]{1}(?:frowning:?:frowning:0{1})[1-9][0-9])|(?:frowning:0{2})[1-9]))

Die nicht-speichernden Klammern kennt OpenOffice wohl nicht (kein Match).

Na ja, wär eben auch zu schön gewesen. So muss ich mir wohl was anderes einfallen lassen.
Trotzdem vielen Dank nochmal (ich hab bei der Rumprobiererei auf alle Fälle viel über reguläre Ausdrücke gelernt :wink: )

July

Hallo July,

vielen Dank für Deine Hilfe. Leider läßt sich mein Problem
damit nicht lösen. Das liegt wohl daran, dass ich bisher
keinen Weg gefunden hab, wie OpenOffice Substrings verwenden
kann… Ich wollte dort mittels regulären Ausdruck ein Suchen
und Ersetzen (bzw. Löschen) basteln. Ich möchte eben diese
führenden Nullen aus den Strings löschen.

OpenOffice scheint ziemlich eingeschränkt zu sein, was die
Unterstützung von regulären Ausdrücken angeht. Ich habe
gerade verschiedene Varianten probiert. Die interessanten
Dinge wie Submatches ersetzen oder Lookaheads (?=) werden
zumindest nicht von meiner Version unterstützt (OO 2.0.2).

Wie wäere es, wenn Du die Ersetzungen mit einem externen Tool
wie z.B. Perl vornimmst und das Ergebnis in OpenOffice einfügst?

Gruß,
-Andreas.

Hallo Andreas,

Wie wäere es, wenn Du die Ersetzungen mit einem externen Tool
wie z.B. Perl vornimmst und das Ergebnis in OpenOffice
einfügst?

ja, ich werd wohl auf so etwas zurückgreifen müssen. Schade eigentlich (hab gerade erst begonnen mich damit zu beschäftigen und war zunächst begeistert, dass ich in OO die Möglichkeit hab reguläre Ausdrück zu verwenden…)

Viele Grüße,
July