AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie Muster optimal in Musterguppen zerlegen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Muster optimal in Musterguppen zerlegen?

Ein Thema von himitsu · begonnen am 16. Feb 2010 · letzter Beitrag vom 16. Feb 2010
 
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.273 Beiträge
 
Delphi 12 Athens
 
#1

Wie Muster optimal in Musterguppen zerlegen?

  Alt 16. Feb 2010, 09:45
Tachchen,

ich versuch es nochmal besser zu erklären.

Es geht im Prinzip um ein Set of WideChar
(genauer geht es um einige DynCharSets, aber dieses ist eigentlich belanglos)

Ich hab praktisch ein Set und möchte dieses möglichst effizient in eines von ein paar vordefinierten "Sets" und den Rest zerlegen.

Es handelt sich dabei um mehrere zusammengesetzte CharSets aus einem RegEx-Ausdruck.

Einfaches Beipsiel: [a-zABC0-9] und dieses soll zu [[:lower:]] + [[:digi:]] + [ABC] ( [ABC[:lower:][:digi:]] ) werden.
(hab für das Beispiel jetzt mal nur die entsprechenden ASCII-Zeichen und nicht alle des ganzen Unicodebereichs verwendet)

Nur blöd, daß es sich hierbei um eine Gruppe von 65-tausend Zeichen und über 30 "Standard"-Sets handelt,
welche auch noch "negiert" enthalten sein können.

[\0-\\:-\x{FFFF}] sollte z.B. [^[:digit:]], bzw. \D ergeben.


Alle Kombinationen durchzuprobieren ist auch nicht so optimal, immerhin kann es mehrere solcher Sets in einem Ausdruck geben und selbst nur ein Durchgang würde ewig dauern.

Bei nur 30 Standardklassen (Sets) würden es schon 60 Klassen ergeben, da jede auch invers enhalten sein kann und dann kann alles zusammen auch nochmal invertiert sein ... macht also hier schonmal 2^120 Kombinationen.

OK, Einiges könnte man ignorieren, da einige Klassen aus anderen zusammengesetzt sind.
z.B. wenn [:alpha:] enthalten ist, dann sind [:lower:] und [:upper:] irrelevant, da sie dort schon drin vorkommen sind, aber dennoch bleiben Unmassen an Möglichkeiten übrig, um alles bruteforcemaßig durchzuprobieren.

Wie könnte ich so also möglichst "einfach"/schnell einen geparsten RegEx-Ausdruck, welcher nur noch die zusammengerechneten und optimierten Werte enthält, wieder zurück in einen String überführen?


Grund:
Eigentlich hatte ich nicht vor das Originalsuchmuster zu speichern und falls nötig Eines aus den zerlegten Daten wieder zusammenzusetzen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
 


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 20:27 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