Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem mit RegEx-Ausdruck (https://www.delphipraxis.net/106921-problem-mit-regex-ausdruck.html)

argonix 18. Jan 2008 19:44


Problem mit RegEx-Ausdruck
 
Hallo!
Ich habe folgenden RegEx-Ausdruck:
Code:
\<nr:([0-7]+[0-7]+[0-7])\>
Dieser soll Dinge in folgendem Format finden: <nr:124> oder <nr:512>. Das tut er aber leider nicht und ich finde keinen Fehler im Ausdruck :wall: Kann jemand von euch sagen, warum das nicht funktioniert? Ich befasse mich noch nicht lange mit RegEx.

omata 18. Jan 2008 19:53

Re: Problem mit RegEx-Ausdruck
 
Ich habe das gerade mal ausprobiert. Das geht doch wunderbar, ich weiss nicht wo da dein Problem ist.

Kannst du da nicht mal mehr Infos geben.
Zum Beispiel...
PHP?
Delphi?
-> welche Funktion
-> welche Eingabedaten

Ein genaues Beispiel was wie nicht geht.

Gruss
Thorsten

Dax 18. Jan 2008 20:01

Re: Problem mit RegEx-Ausdruck
 
Code:
\<nr:([0-7]+[0-7]+[0-7])\>
Heißt: "<nr:(1 oder mehr ziffern)(1 oder mehr ziffern)(1 ziffer)>"

Was du suchst wäre
Code:
\<nr:([0-7]{3})\>

oder

\<nr:([0-7][0-7][0-7])\>

argonix 18. Jan 2008 20:28

Re: Problem mit RegEx-Ausdruck
 
Ich benutze TRegExpr und Lazarus unter Linux.
Irgendwie funktionieren die beiden Codes auch nicht. Ich habe allerdings das Projekt mal testweise mit einem anderen Ausdruck getestet: Es funktioniert! Ich benutze folgende Funktion:
Delphi-Quellcode:
h:=ReplaceRegExpr('\<nr:([0-7]{3})\>', h, '', false);
h ist ein String, der den zu bearbeitenden Text enthält. Allerding ist das Ergebnis dieser Funktion immer gleich dem Eingangswert.

omata 18. Jan 2008 23:04

Re: Problem mit RegEx-Ausdruck
 
Zitat:

Zitat von argonix
Ich benutze TRegExpr und Lazarus unter Linux.

:thumb:

Zitat:

Zitat von argonix
getestet: Es funktioniert! Ich benutze folgende Funktion:
Delphi-Quellcode:
h:=ReplaceRegExpr('\<nr:([0-7]{3})\>', h, '', false);
h ist ein String, der den zu bearbeitenden Text enthält. Allerding ist das Ergebnis dieser Funktion immer gleich dem Eingangswert.

schade das du da nicht konkreter warst.

Hier mal mein Beispiel (Delphi) ...
Delphi-Quellcode:
Result:=ReplaceRegExpr('<nr:([0-7]+[0-7]+[0-7])>', 'aa<nr:124>bb', '', false);
Ergebnis: aabb

Hier nochmal ein etwas spezielleres Beispiel...
Delphi-Quellcode:
var old, new:string;
begin
  new:='aa<nr:<nr:124>555>bb';
  repeat
    old:=new;
    new:=ReplaceRegExpr('<nr:([0-7]+[0-7]+[0-7])>', old, '', false);
  until old = new;
  Result:=new;
end;
Ergebnis: aabb


Gruss
Thorsten

argonix 19. Jan 2008 09:46

Re: Problem mit RegEx-Ausdruck
 
Das ist merkwürdig. Kann das Problem etwas mit dem Inputstring zu tun haben?
Der sieht folgendermaßen aus:
Code:
/home/x-user/data/necro/graphics/nr1.png <nr:001>

argonix 19. Jan 2008 11:09

Re: Problem mit RegEx-Ausdruck
 
:wall: :wall: :wall: :wall: :wall: Ich habe den fehler! Der Ausdruck wird von dem befehl zwar entfernt, aber später im Programm wird diese Änderung dann wieder glöscht! (es steht dort statt einem h ein s, womit der String auf den Anfang zurückgesetzt wird)
Danke für die Hilfe! War wohl etwas spät gestern...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz