Regulärer Ausdruck: Problem mit Ausnahme

Hallo!

Ich habe einen Text den ich nach Anweisungen durchsuchen muss die eine Schriftgröße darstellen sollen. Das sieht dann konkret so aus: ‚^13;‘ oder so: ‚^5;‘.

Den regulären Ausdruck um das zu finden habe ich mir mal eben zusammengebastelt und der sieht so aus:

[^][0-9]?[0-9][;]

Das funktioniert theoretisch auch einwandfrei, wenn nicht mein Softwaretester der Meinung wäre dass er z.B. ‚^13;‘ direkt in den Text schreibt, mit dem Effekt dass ich in meinem String den Wert ‚^^13;‘ an dieser Stelle bekomme. Dabei wirkt sich das erste ^-Zeichen als Escapecharacter aus, so dass das Ganze als Text und nicht als Anweisung interpretiert wird.

Wie bekomme ich meinen regulären Ausdruck so hingebogen, dass er ‚^13;‘ als Treffer erkennt, aber ‚^^13;‘ ignoriert?

Bekomms einfach nicht hin :frowning:

Viele Grüße

Ralf

Hallo Millionster :smile:,

wie wärs damit (ungetestet):

[^^][\^]?[0-9]{1,2};

also:

  • ein „Nicht-^“ gefolgt von
  • 0 oder einem „^“ gefolgt von
  • ein oder 2 Dezimalziffern und
  • einem Semikolon

gruss
bernhard

Moin moin

Hallo Millionster :smile:,

wie wärs damit (ungetestet):

[^^][^]?[0-9]{1,2};

also:

  • ein „Nicht-^“ gefolgt von
  • 0 oder einem „^“ gefolgt von
  • ein oder 2 Dezimalziffern und
  • einem Semikolon

hmm das sieht aber komisch aus . Mal durchgegangen an einem Beispiel :
Wenn ich ^13; hab bekomme ich ^13;
Wenn ich ^^13; hab bekomme ich garnichts ;
Wenn ich a^13; hab bekomm ich a^13;

Warum also dieses nicht für das dächle, das impliziert ja das es etwas anders sein darf und das wäre falsch .

Ich dacht er wollt als Treffer ^13; haben auch wenn da ^^13; steht.

Die folgende Klammer gibt also nur den treffer wieder. Und von deinem Dächle ist dann nur eins drinne.

(^{1}[0-9]{1,2}:wink:

also wenn dein string "Hallo ^^13; hallo " ist willst du eigentlich als Treffer nur ^13; haben ? Oder willst du das lieber ersetzen ? Also ^^13; durch ^13; . so ganz ist mir die Verarbeitung nicht klar .
Oder soll ^^13; als regular expression dienen ? dann würd ich allerdings erstmal einfach ^^ gegen ^ tauschen . Dannhat man erst gar keine ^^13; im Text.

Hallo Bernhard, Hallo Thomas,

sorry dass ich mich erst so spät wieder melde.

Leider hat der Ausdruck von Bernhard gar nicht das erziehlt was ich wollte und Thomas hat mich tatsächlich falsch verstanden (sorry, da war ich wohl zu ungenau).

Am besten ich greife das Beispiel von Thomas auf und erweitere es ein wenig: Gegeben ist der folgende String:

„Hallo ^13; hallo ^^13; hallo.“

Ich möchte das mein RegEx das ^13; erkennt aber das ^^13; ignoriert. Bei den momentanen Ansätzen werden nämlich beide als Treffer angegeben.

So langsam frage ich mich ob das überhaupt realisierbar ist.

VG

Ralf

Hallo allerseits,

mein Vorschlag:

[^^]^[0-9]+;

Der Ausdruck findet zwar auch unsinnig große Zahlen, aber das muss die Anwendung ohnehin prüfen; Achtung: das Zeichen vor dem Dach ist hier noch enthalten, ggf. runde Klammern um den interessanten Teil ergänzen.

Grüße, guidot

Gelöst?
Ich glaub ich habs:

(?