![]() |
[PREG] Wie Zahlen erkennen?
Ich habe Strings folgender Art:
Zitat:
Hat jemand eine Idee/Weiß jemand, wie man das recht einfach prüfen könnte? Wenn es nur mit einem komplexen Ausdruck ginge, dann bin ich mit einer Copy-Funktion, die mir den String nach dem Tiefstrich und vor dem Punkt zurückgibt, besser beraten. |
Re: [PREG] Wie Zahlen erkennen?
Also zumindestens in php lässt sich das mit folgendem Pattern lösen:
Code:
Weiss nicht, ob es auch kürzer und eleganter geht - aber so scheint es schonmal zu tun.
<?php
$str = "irgendeineabsolutbeliebigeZeichenkette_{0001-9999}.irgendeineabsolutbeliebigeZeichenkette"; if (preg_match('/.*_\{([0-9]{4})\-([0-9]{4})\}\..*/', $str, $match)) { echo $match[1] . " - " . $match[2]; } ?> Gruß Wormid |
Re: [PREG] Wie Zahlen erkennen?
Hallo,
ich würde einen Mini-Scanner programmieren (Scanner - das Ding aus Compilerbau). Vorteil: Einfach zu programmieren und superschnell. Falls Du Infos dazu brauchst, melde Dich - ich kopiere Dir dann ein paar Zeilen Code. (Reguläre Ausdrücke wären mir schon fast zu spezielle, wenn das Dein einziges Problem dieser Art wäre.) Gruß, Marvin. |
Re: [PREG] Wie Zahlen erkennen?
Suchst du
![]() |
Re: [PREG] Wie Zahlen erkennen?
Der Ausdruck von Wormid sollte funktionieren, sofern Du wirklich "irgendeineabsolutbeliebigeZeichenkette" meintest. Falls nicht, ersetze die Teile einfach durch ".*" bzw ".+", falls Du hier mindestens ein Zeichen haben möchtest.
Achtung, "." erkennt auch Leerzeichen, Tabulatoren, etc. Falls Du allerdings einen Bezeichner erwartest, sieh Dir einmal die Zeichenklasse "\w" genauer an. Solltest Du mit "{0000-9999}" gemeint haben, dass hier zB "{0000}", "{0001}", etc. stehen sollte, musst Du das ebenfalls erwähnen. Ich gehe letztlich von diesem Ausruck aus:
Code:
Suche im Forum, falls Du nicht genau weißt, wie Du [dp]reguläre Ausdrücke[/dp] in Delphi verwenden kannst.
\w+_\{\d{4}\}.\w+
|
Re: [PREG] Wie Zahlen erkennen?
Zunächst: "irgendeineabolsutbeliebigeZeichenkette" soll das heißen, was es bedeutet, nicht dass genau dieser String da steht ;).
Ich hab mich an einer Stelle etwas missverständlich ausgedrückt, die geschweiften Klammern sind nciht teil des Bezeichners, sondern dienten nur zur Abgrenzung. Das
Code:
bedeutet wohl, dass da Zahlen mit 4 Stellen stehen dürfen, oder? Allerdings ist das doofe, dass 0001 erlaubt ist, 0000 aber nicht! Das war ja das grundlegende Problem! Ich bräuchte also eine Art Mindestwert, den ich angeben kann.
\d{4}
Die Frage ist zwar nicht mehr so wichtig, ich habe das Problem jetzt mit Stringformatierungen gelöst. Hinter dem Punkt steht kein Tiefstrich, und so kopiere ich die Zeichen vom letzten Tiefstrich bis zum letzten Punkt, das geht auch. Aber mich würde dennoch interessieren, ob es sowas gibt. Zitat:
Aber danke für die Hilfe von allen! |
Re: [PREG] Wie Zahlen erkennen?
Zitat:
Zitat:
Zitat:
Zitat:
Code:
bzw, falls Dir egal ist, ob es tatsächlich genau vier Ziffern sind:
\d{3}[1-9]|\d\d[1-9]\d|\d[1-9]\d\d|[1-9]\d{3}
Code:
\d*[1-9]\d*
Zitat:
Kombiniere ich diese Prämissen und gehe ich von der Verwendung meines RegExp-Wrappers mit automatischer Referenzzählung aus, könnte der Code so aussehen:
Delphi-Quellcode:
with RegExp('_(\d*[1-9]\d*)\.') do
if Execute(AString) then myInt:= StrToInt(Match[1]); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz