Suche RegExpr für Verneinung

Hallo,

ich möchte die Eingabe in einem JTextField gegen eine RegExpr.
prüfen. Machen tue ich das mit
Pattern.matches( regExpr, JTextField.getText() );

Nun brauche ich eine RegExp., die verbietet, dass die Zeichenfolge
„SR_“ am anfang eines Wortes steht.

Als SR_Test ist verboten aber SF_Test, RR_Test oder SR-Test sind erlaubt.

Wie mache ich das. Habe es versucht mit z.B: ^/^SR_/

Danke
Albert

Hallo Albert,
ich vermute mal, daß die RegEx-Syntax in Java der von Perl ähnelt. Dann wäre aus meiner Sicht eine Möglichkeit:

/^[^S]R\_/

sprich:
Stringanfang (^), gefolgt von
beliebiges Zeichen der negierten Zeichenklasse S (im Klartext: alles außer S)
Zeichenfolge „R_“

gruss
bernhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi -

ich möchte die Eingabe in einem JTextField gegen eine RegExpr.
prüfen. Machen tue ich das mit
Pattern.matches( regExpr, JTextField.getText() );
Nun brauche ich eine RegExp., die verbietet, dass die
Zeichenfolge
„SR_“ am anfang eines Wortes steht.

Mußt du da überhaupt die Regexp-Engine anwerfen?
Warum nicht

if (eingabeString.indexOf(" SR_") != -1) {
System.error.println(„Falscheingabe“);
}

Oder hab ich da was falsch verstanden?

mfG,

J.P.Jarolim

Ja die Sache ist komplexer als man denkt.
Hintergrund ist, dass das Eingabeformular in einer XML-Datei beschreiben ist und man in der XML-Datei auch gleich zu jedem Feld ein Prüfpattern angeben kann. Das Prüfpattern wird dann zur Laufzeit über RegExpr. ausgewertet. Somit kann jedes beliebige Feld ohne zusätzliche
Programmierung geprüft werden. Man muß nur das Prüfpattern im XML-File anpassen.

Albert

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi
funktioniert nicht ganz.

Also nochmal: Es sind alles Wörter erlaubt solange sie nicht mit „SR_“ beginnen. Also nur „SR_“ muß am Anfang der Zeichenkette verboten werden.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

nun ja, es gibt zwei Möglichkeiten:
1.) Du guckst, ob ‚SR_‘ am Anfang vorkommt und negierst das Ergebnis:
if (!matches(…))
In Perl wäre das dann !~ anstatt =~,
oder
2.) Du machst /^(SR_){0}/
d.h. Wenn ‚SR_‘ am Zeilenanfang Null-mal vorkommt, …

Doku von RegularExpressions in Perl:
http://aspn.activestate.com/ASPN/docs/ActivePerl/5.8…

Ben