2017-02-09 3 views
1

Ich bin ein pensionierter Lehrer und haben eine Möglichkeit entwickelt, kurze wissenschaftliche Fragen mit Regex automatisch zu markieren. Ich benutze einen mehr oder weniger Standard-Ansatz, die Schlüsselwörter (A, B, C, usw.) und lehnt verbotene Worte (X) erfordert:Wie RegEx für Kombinationen von verbotenen Wörtern

/^(?!.*?(X))(?=.*?\b(A))(?=.*?\b(B))(?=.*?\b(C)).{0,150}$/i 

I auf der Grundlage von 2 verbotenen Worten möchte in der Lage sein ablehnen (X und Y) vorhanden sind, aber wo der eine oder andere akzeptiert wird.

Also A B C; A B C X; A B C Y würden alle akzeptiert werden, aber A B C X Y würde abgelehnt werden. Ist es möglich, dies und möglicherweise mehr als 2 verbotene Wörter zu tun?

Übrigens verstehe ich nicht viel von Regex, ich benutze es einfach!

+0

Während es möglich sein kann (je nach regex Variante) es ist wie viel schwieriger zu sein als eine Regex mit der Eingabe in Worte zu brechen, die bedeutenden Worte zu kategorisieren und dann Zählen die Wörter in jeder Kategorie. – Richard

+0

Abhängig von der Komplexität Ihrer voraussichtlichen Eingabe ist dies möglicherweise sogar völlig unmöglich - ist "ABCXBCX" zum Beispiel legal oder illegal? –

Antwort

1

Für den ersten Teil der Regex, könnten Sie verwenden:

(?!(?=.*X)(?=.*Y)) 

Das bedeutet X und Y nicht beide vorhanden sein können.

Die ganze Regex:

/^(?!(?=.*X)(?=.*Y))(?=.*\bA)(?=.*\bB)(?=.*\bC).{0,150}$/i 
+0

Danke Toto, das funktioniert perfekt - und einfach und elegant !! – RankAmateur

+0

Gern geschehen, froh, dass es hilft. Fühlen Sie sich frei, die Antwort als akzeptiert zu markieren, siehe: http://stackoverflow.com/help/someone-answers – Toto

Verwandte Themen