Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Regex Problem (https://www.delphipraxis.net/110699-regex-problem.html)

Bubblegum 22. Mär 2008 20:48


Regex Problem
 
Hab mal eine Frage zu regulären Ausdrücken:

Beispiel: Ich möchte einen String nach dem Wort "Nummer" oder "Number" untersuchen. "Nummer" kann entweder alleine als auch als Teilwort vorhanden sein. Soweit kein Problem -> Ausdruck z.B.: "(Nummer|Number)". Was muss ich aber machen, wenn ich ausschließen will, dass das Wort "Telefon" auch Teil des Strings ist?
Einzelne Zeichen kann ich ja negieren mit "^° aber wie mach ich das mit einem ganzen Wort?
Der Ausdruck "(Nummer|Number|^Telefon)" funktioniert so ja nicht. Wie mache ich das?

KingIR 22. Mär 2008 20:59

Re: Regex Problem
 
Am sinnvollsten einfach eine zweite Regex bzw. die Stringsuchfunktion der Sprache deiner Wahl benutzen. Du könntest auch ein negatives lookahead benutzen, aber einfacher, schneller und verständlicher ist es, Pos, indexOf, substr, etc. zu benutzen.

Bubblegum 22. Mär 2008 21:03

Re: Regex Problem
 
@KingIR
Könntest du mir mal ein Beispiel dafür geben?

kcx 22. Mär 2008 21:16

Re: Regex Problem
 
Haste das mal probiert:

[^telefon](nummer|number)

Bubblegum 22. Mär 2008 21:25

Re: Regex Problem
 
Das Problem ist, dass "Telefon" überall stehen kann. Z.B. "Nummer - Telefon" kann genauso wie "Telefonnummer" vorkommen. Normalerweise würde ich das ja auch mit "Pos" oder so machen, aber ich muss das ganze in einen regulären Ausdruck unterbringen und darf keinen Delphi - Code verwenden. Gibt es da nicht sowas wie "and not (Telefon)" dann würde das immer greifen. Kann man das mit Lookahead oder machen. Das wäre toll, wenn ich da mal ein Beispiel hätte.

Dax 22. Mär 2008 21:38

Re: Regex Problem
 
Zitat:

Zitat von kcx
Haste das mal probiert:

[^telefon](nummer|number)

Das bedeutet nichts weiter als "Vor dem Wort "nummer" oder "number" dürfen weder t, e, l, f, o oder n stehen".


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