![]() |
Einfache Regex gesucht
Hallo,
ich frage mich gerade, ob es eine einfache Möglicheit gibt, folgenden Check direkt auf der Regexebene durchzuführen, mir fällt dazu aber nichts Gescheites ein: Ein gültiger Ausdruck besteht aus einem oder mehreren von 4 bestimmten Buchstaben in beliebiger Reihenfolge, das wäre also als Regex z.B. [KJFR]+ aber mit der Einschränkung, dass jeder der 4 Buchstaben höchstens einmal vorkommen darf. |
AW: Einfache Regex gesucht
Geht, so wie ich das sehe, nur, wenn du alle Permutationen explizit auflistest. Also 'KJFR|KJRF|KRJF|KRFJ|...'
Nicht wirklich sinnvoll :wink: |
AW: Einfache Regex gesucht
Warum soll es denn unbedingt RegEx sein?
|
AW: Einfache Regex gesucht
Machs wie du es auf dem Papier lösen würdest! Bau dir einen endlichen Automaten! ;)
|
AW: Einfache Regex gesucht
Es muss nicht unbedingt Regex sein. Aber ich verwende Regex, um diesen Teilstring aus einem grösseren String herauszuklauben, und wenn der Check dabei gleich mitgegangen wäre (es geht sicher irgendwie, aber auf eine einfache Lösung bin ich nicht gekommen), wäre es am einfachsten gewesen. Natürlich kann ich die Prüfung auch extra programmieren.
|
AW: Einfache Regex gesucht
Code:
genau 4
^[KJFR]{4}$
Code:
1 bis 4
^[KJFR]{1,4}$
|
AW: Einfache Regex gesucht
Zitat:
Code:
([abc])(?!\1)([abc])(?!\1|\2)([abc])(?!\1|\2|\3)
![]() |
AW: Einfache Regex gesucht
Es ist absolut möglich. Die Sprache, die du beschreiben willst, ist regulär, also ist sie sogar mit der theoretischen Definition von Regulären Ausdrücken beschreibbar.
Abgesehen von der Auflistung aller Worte (Wie von Namenloser beschrieben) ginge evt. das:
Code:
ist aber weniger leserlich.
(K?J|J?K)?(FR|RF)? | (K?F|F?K)?(JR|RJ)? | (K?R|R?K)(FJ|JF)? | (F?J|J?F)(KR|RK)? | (J?R|R?J)?(KF|FK)? | (F?R|R?F)?(KJ|JK)?
Ansonsten, wenn wir von PCREs reden, bin ich sicher dass es eine kompaktere Möglichkeit gibt [edit]siehe Beitrag darüber[/edit]. Allerdings ist das dann wahrscheinlich kaum noch performant. Insb. weil wir von einer endlichen Sprache reden, sind Regexes overkill. Die Prüfung direkt im Code zu erledigen ist definitiv performanter und leserlicher. Zitat:
Zitat:
|
AW: Einfache Regex gesucht
Danke für eure Antworten. Mit dem Ansatz von Bug werde ich wohl weiterkommen (ist noch nicht ganz das, was ich brauche, weil der String darf jeden Buchstaben höchstens einmal enthalten, muss aber nicht alle 4 erlaubten Buchstaben enthalten - aber das zu verändern dürfte jetzt eher einfach sein, ein paar zusätzliche Klammern und Fragezeichen und es sollte passen :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz