Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit regex (https://www.delphipraxis.net/80854-problem-mit-regex.html)

agm65 16. Nov 2006 12:41


Problem mit regex
 
hi leute, habe folgendes problem.
ich möchte meinen string nach bestimmten chars durchsuchen das mache ich so:

Delphi-Quellcode:
reg.Subject:= vid;
reg.RegEx:= '([0-9a-zA-Z_-])+';

jetzt möchte ich aber wenn ein string ein zeichen hat, was ich nicht angegeben habe, diesen als fehler anzeigen.

Delphi-Quellcode:
if reg.Match then
     begin
     showmessage('true')
else
showmessage('false')
das problem ist jetzt, dass alle strings als true ausgegeben werden weil auch chars von den oben genannten dabei sind.
was kann ich da machen ?

Daniel 16. Nov 2006 12:43

Re: Problem mit regex
 
Setz' das Plus-Zeichen mal in die runde Klammer. ;-)

agm65 16. Nov 2006 12:46

Re: Problem mit regex
 
habe ich, mit dem gleichen ergebnis...
wie gesagt:

string1: $1245
string2: ah45


beide true weil ja beide auch "gewollte" zeichen enthalten.


string1: sollte false sein.

OregonGhost 16. Nov 2006 13:00

Re: Problem mit regex
 
Du suchst ja nach dem, was drin sein soll, obwohl du eigentlich wissen willst, ob etwas drin ist, das nicht drin sein soll, richtig?
Dann kannst du die Charakterklasse einfach negieren. Das müsste (je nach Dialekt) ungefähr so gehen:
Delphi-Quellcode:
reg.RegEx:= '([^0-9a-zA-Z_-]+)';
Wenn jetzt eins der Zeichen drin ist, das NICHT in der Charakterklasse enthalten ist, bekommst du einen Match.

3_of_8 16. Nov 2006 13:01

Re: Problem mit regex
 
Delphi-Quellcode:
reg.RegEx:= '^([0-9a-zA-Z_-]*)$';
EDIT: Das matcht dann, wenn der String deinen Regeln entspricht.

agm65 16. Nov 2006 13:05

Re: Problem mit regex
 
cool, das geht ja wunderbar ! danke dir, das wusste ich garnicht !...vielen dank amigo ;) !

OregonGhost 16. Nov 2006 13:06

Re: Problem mit regex
 
Welches von beiden hast du jetzt genommen? :mrgreen:

agm65 16. Nov 2006 13:10

Re: Problem mit regex
 
es gehen beide :) ! aber damit mein code so stimmt wie er ist, habe ich
reg.RegEx:= '^([0-9a-zA-Z_-]*)$';

genommen, dann muss ich nichts umdrehen..

wie kann ich jetzt noch sagen von char 1,20 ?

also in php so: eregi("^[a-z0-9_-]{1,20}$",

3_of_8 16. Nov 2006 13:29

Re: Problem mit regex
 
Na so:

Delphi-Quellcode:
reg.RegEx:= '^([0-9a-zA-Z_-]{1,20})$';
Eigentlich genauso wie in PHP, die Klammern kannst du IMHO auch weglassen.

agm65 16. Nov 2006 13:42

Re: Problem mit regex
 
cool thx


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:25 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