AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Reguläre Ausdrücke: Verschachtelte Klammern

Reguläre Ausdrücke: Verschachtelte Klammern

Ein Thema von JocalAreaNetwork · begonnen am 13. Jan 2006 · letzter Beitrag vom 13. Jan 2006
Antwort Antwort
JocalAreaNetwork

Registriert seit: 19. Aug 2005
35 Beiträge
 
Delphi 2006 Architect
 
#1

Reguläre Ausdrücke: Verschachtelte Klammern

  Alt 13. Jan 2006, 20:15
Hallo,

ich bin auf ein Problem mit einem regulären Ausdruck gestoßen und wäre dankbar, wenn jemand eine Lösung parat hat, oder wenigstens weiß, dass das mit regulären Ausdrücken nicht zu lösen ist.

Mein Problem bezieht sich auf mathematische Terme, in welchen ich Produkte, die einen Faktor 0 im Term haben, komplett mit 0 ersetzen will. Wenn ich nun also einen String 4*5*0*2*(4+5(5+4)) betrachte, dann ist dies absolut kein Problem, der Ausdruck findet es. Bei folgendem Term geht es nun jedoch nicht mehr:

4*0*(5+4)+4*(2+1)

Es liegt daran, dass der Ausdruck nicht erkennt, wann die letzte Klammer aufhört. Hier mit dem ? Operator zu arbeiten macht ebenfalls keinen Sinn, da ich ja Klammern beliebig tief verschachteln kann. Kann man irgendwie dem Ausdruck beibringen, dass er also im Prinzip zählt, wie viele Klammern geöffnet wurden und wie viele geschlossen werden müssen? Ich würde gerne (5+4) einfach wegfallen lassen können, nur leider könnte dieser Faktor ja auch (5+4(3+45)) sein.

Viele Grüße
JocalAreaNetwork
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Reguläre Ausdrücke: Verschachtelte Klammern

  Alt 13. Jan 2006, 20:36
Wenn du jemals eine Vorlesung zum Thema Theoretische Informatik hören wirst, wirst du erfahren, dass es verschiedene Arten von Sprachen (in der Chomsky-Hierarchie) gibt.

Die oberste Stufe sind die Typ3-Sprachen oder auch reguläre Sprachen. Reguläre Ausdrücke sind eine Methode, um solche Sprachen zu beschreiben.
Klammerstrukturen sind genau der Grund, weshalb man zu Typ2-Sprachen (oder auch kontextfreien Sprachen) übergeht: Sie können mit regulären Sprachen nicht beschrieben werden.


Lange Redem kurzer Sinn: Du wirst etwas anderes brauchen, um solche Ausdrücke zu beschreiben. Strkturbäume oder Kellerautomaten könnten das Mittel deiner Wahl sein.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: Reguläre Ausdrücke: Verschachtelte Klammern

  Alt 13. Jan 2006, 20:50
Du koenntest jedes Klammernset, welches keine anderen klammern beinhaltet, schon mal aufloesen. Dies machst du in einer Schleife so lange, bis im gesamten Ausdruck keine Klammern mehr da sind

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
JocalAreaNetwork

Registriert seit: 19. Aug 2005
35 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Reguläre Ausdrücke: Verschachtelte Klammern

  Alt 13. Jan 2006, 21:12
@Chewie: Danke dir, das bringt mich weiter. Ich werte es dann wohl ähnlich lösen, wie ich es momentan bereits bei meiner Termauswertung machen muss, nämlich den String langsam rekursiv zerlegen. Trotzdem wäre es interessant etwas über die von dir angesprochenen Verfahren herauszufinden. Gibt es da eventuell eine Umsetzung auch für Delphi, am besten mit einer generellen Einführung?

Ich wäre dir sehr verbunden.

Grüße
JocalAreaNetwork
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 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