Suchergebnisse
Suchergebnisse 1-12 von insgesamt 12.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
-
Zitat von ErfinderDesRades: „Jo - mach du das!“ Aber dann hätte er doch nichts zu tun (;? Einen endlichen Automaten zu realisieren ist extrem simpel. Wird halt bei seinem Beispiel extrem viele Zustände haben, ist aber vermutlich dennoch effizienter als das was er da gerade versucht. Alternativ muss er ja nicht unbedingt auf Buchstaben arbeiten - er kann ja einfach das Alphabet über ganze Wörter definieren - das reduziert die Anzahl der Zustände drastisch.
-
Endliche Automaten hat man im ersten Semester im Modul theoretische Informatik. Da implementiert man dann auch einen endlichen Automaten der eine bestimmte Sprache akzeptiert. Das sind nur Zustandswechsel. Was soll bitteschön daran schwer sein? Zustand q0, dort liest er ein Wort, wechselt entweder zu q1, oder q2, andere Wörter führen jeweils wieder zu sich selbst, bis der ein [...]/(...) findet und wieder Zustand wechselt, bis er im akzeptierenden Zustand ist (zB weil es ein Epsilon las, denn di…
-
Nein, das ist ziemlich unschön was du da machst. Endlich Automaten arbeiten mit Zuständen. Pro eingelesenes Wort wird entschieden, welcher Zustand folgt. RegEx (also die Klasse, ansonsten ist es einfach die Sprache) ist NICHTS anderes. Es parst einfach ein gewisses Pattern und erzeugt dazu einen passenden endlichen Automaten der diese Sprache akzeptiert. Es gibt zu jedem regulären Ausdruck einen passenden Automaten (Beweis erfolgt über Kombination von Blackbox-Automaten). Aber im ernst, statt zu…
-
.... es ist RegEx (regular Expression => reguläre Ausdrücke => endliche Automaten) was ich hier schreibe, ich habe dir als Tipp nur mitgeben wollen, selbst einen endlichen Automaten zu erstellen, statt den dir generieren zu lassen. So kannst du schneller vorgehen und zudem an beliebig vielen Stellen optimieren. Das war kein OffTopic was ich schrieb.
-
Hier mal der endliche Automat das Sprachen der Form (...) (a) ... (b) ... akzeptiert: (Versteckter Text) Aufruf: C#-Quellcode (26 Zeilen) Kann sein, dass es noch hier und da Fehler gibt, hab es' auf die Schnelle implementiert. Dasselbe analog für [...] [x] ... [y] ... Ich habe "item..." als beliebig viele Zeichen interpretiert. Falls dem nicht so ist, sieht der Automat ein wenig anders aus. Aber es soll ja ein Anreiz sein, dass du das selbst implementierst. @ErfinderDesRades Es ist einfach - was…
-
Zitat von ErfinderDesRades: „^[\[\(](.*)[\]\)]\s*[\[\(]([a-zA-Z])[\]\)](.*)[\[\(]([a-zA-Z])[\]\)](.*)“ Ist da nicht ein kleiner Fehler? Müssen die Leerzeichen nach jeder eckigen Klammer nicht existieren? Also: Quellcode (1 Zeile) - korrekt Quellcode (1 Zeile) - sollte doch inkorrekt sein? Also ohne Kleene-Star: Quellcode (1 Zeile) oder Quellcode (1 Zeile)
-
Zitat von Facebamm: „Also nehm ich den Zeitaufwand für endliche Automaten und vergleich den mit einem RegexPatter zu schreiben muss ich sagen, gefällt mir regex mehr allein schon weil ich ohne mühe Dinge ändern kann Zb: Gruppen hinzufügen, oder sobald eine änderung auftritt sie in weniger als 2min ins pattern bekomme.“ Kein Zweifel ;), aber sein Problem war ja die Performance - und weil das Problem eher simpel ist, wäre ein selbst konstruierter, endlicher Automat wahrscheinlich die bessere Alter…
-
Addendum: Mir fällt ein: Es ist unsinnig die beiden Fällen (jeweils eckige Klammern, und runde Klammern) im regulären Ausdruck auszuformulieren. Mach einfach ein string.replace("(", "[").replace(")", "]"); und prüfe ausschließlich auf die eckigen Klammern - das sollte den Prozess eventualiter beschleunigen. Im Grunde sind diese Sprachen nämlich äquivalent - sie unterscheiden sich nur in einem einzelnen Zeichen. Warum also bitteschön sowohl den Fall '(', als auch den Fall '[' separat behandeln? D…