RegEx funktionieren nicht

Dimax

Dimax

Bekanntes Mitglied
Hallo, ich habe ein kleines Problem mit RegEx.
Ich habe eine Classe mit einer Methode ,welche mir je nach Ergebnis einen String zurückliefert:
Java:
import java.util.regex.Pattern;

public class KatGetter {
    public static String getKategorie(String kategorie){
    
        String regDat="(?i)(\\W|^|.*)data\\s{0,3}scientist|data\\s{0,3}analyst|"+
                      "biostatistiker|data\\&{0,3}analyst(\\W|$)";
        String regAdmin="(?i)(\\W|^|.*)admin(\\W|$|.*)";
        String regAnalyst="(?i)(\\W|^|.*)analyst(\\W|$|.*)";
        String regArchitekt="(?i)(\\W|^|.*)architekt(\\W|$|.*)";
        String regConsult="(?i)(\\W|^|.*)berater|consultant(\\W|$|.*)";
        String regEntwickl="(?i)(\\W|^|.*)entwickl|develop(\\W|$|.*)";
        String regEngin="(?i)(\\W|^|.*)engineer|ingenieur(\\W|$|.*)";
        String regTester="(?i)(\\W|^|.*)test(\\W|$|.*)";
        String regTrain="(?i)(\\W|^|.*)trainer|coach(\\W|$|.*)";
        String kat="";
        if(Pattern.matches(regDat, kategorie)){
            kat=kat.concat("Data Scientist,");
            System.out.println(kat);
        }
        if(Pattern.matches(regAdmin, kategorie)){
            kat=kat.concat("Administrator,");
            System.out.println(kat);
        }
        if(Pattern.matches(regAnalyst, kategorie)){
            kat=kat.concat("Analyst,");
            System.out.println(kat);
        }
        if(Pattern.matches(regArchitekt, kategorie)){
            kat=kat.concat("Architekt,");
            System.out.println(kat);
        }
        if(Pattern.matches(regConsult, kategorie)){
            kat=kat.concat("Consultant,");
            System.out.println(kat);
        }
        if(Pattern.matches(regEntwickl, kategorie)){
            kat=kat.concat("Entwickler,");
            System.out.println(kat);
        }
        if(Pattern.matches(regEngin, kategorie)){
            kat=kat.concat("Engineer,");
            System.out.println(kat);
        }
        if(Pattern.matches(regTester, kategorie)){
            kat=kat.concat("Tester,");
            System.out.println(kat);
        }
        if(Pattern.matches(regTrain, kategorie)){
            kat=kat.concat("Trainer,");
            System.out.println(kat);
        }else{System.out.println(kategorie);}
        return kat;
    }

}
Das funktioniert aber nicht,weil manche Wörter werden nicht abgefangen.
 
L

LimDul

Top Contributor
Und was sollen wir jetzt tun? Meine Glaskugel ist kaputt.

Hint:
Manche werden nicht abgefangen ist keine saubere Fehlerbeschreibung. Das ist ähnlich sinnvoll wie "Mein Auto macht nicht was es soll".

Was soll die Funktion tun? "Je nach Ergebnis einen String zurücklieferen" ist keine Beschreibung der Funktion. Die Funktion liefert einen String zurück, also tut sie das was sie soll.

Du musst schon angeben:
* Was soll die Funktion genau tun - wann soll warum was kommen
* Bei welcher Eingabe kommt was für ein falsches Ergebnis und was wäre das erwartete richtige Ergebnis.
 
Dimax

Dimax

Bekanntes Mitglied
Es gibt keine Fehlermeldungen,deswegen vermute ich ,dass die RegEx falsch sind.Das Problem ist ,das im String werden manche Wörter nicht gefunden.Die Regex habe ich online getestet,war alles in Ordnung.
Zmb.im Satz:
ServiceManager,Consultant(m/w/d)...vonAlternativenBewertungderReportsfürdasKapazitätsmanagement
sollte if(Pattern.matches(regConsult, kategorie)){ true sein..macht es aber nicht ,entweder regex falsch oder wird übersprungen.
 
kneitzel

kneitzel

Top Contributor
Also generell sind Deine Regulären Ausdrücke so nicht wirklich sinnvoll.

(?i) -> ok, Du willst nicht mehr case sensitive sein.
(\\W|^|.*) -> Was willst Du erreichen? Das ist ja ein oder - wobei das letzte Element .* ist, was für wirklich beliebiges steht. Das umfasst also auch die vorherigen Dinge und ein .* könnte man statt dessen einsetzen.

Dann hast Du da ein |, das alles trennt, also entweder du hast das (\\W|^|.*)data\\s{0,3}scientist oder data\\s{0,3}analyst oder ... oder data\\&{0,3}analyst(\\W|$) ==> Willst Du da evtl. auch einen Block haben, so dass am Anfang das (\\W|^|.*) und am Ende das (\\W|$) für alles gilt?

Das nur einmal, was mir so auf Anhieb auffällt.
 
Dimax

Dimax

Bekanntes Mitglied
Mit (\\W|^|.*) am Anfang und mit(\\W|$) am Ende möchte ich dass das gesuchte Wort am Satzanfang,1wConsultant,,, und hier auch also überall gefunden wird.
 
kneitzel

kneitzel

Top Contributor
Es gibt keine Fehlermeldungen,deswegen vermute ich ,dass die RegEx falsch sind.Das Problem ist ,das im String werden manche Wörter nicht gefunden.Die Regex habe ich online getestet,war alles in Ordnung.
Zmb.im Satz:
ServiceManager,Consultant(m/w/d)...vonAlternativenBewertungderReportsfürdasKapazitätsmanagement
sollte if(Pattern.matches(regConsult, kategorie)){ true sein..macht es aber nicht ,entweder regex falsch oder wird übersprungen.
Also nur einfach einmal für Dich zum Testen wäre meine Empfehlung, einfach ein kleines Testprogramm zu bauen, also sowas wie hier:
Java:
    public static void main(String[] args) {
        String pattern = "(?i).*(berater|consultant).*";
        String value = "ServiceManager,Consultant(m/w/d)";
        boolean result = Pattern.matches(pattern, value);
        System.out.println("Pattern.matches(" + pattern + ", " + value + ") = " + result);
    }

Den Regex habe ich etwas angepasst - also den Ausdruck am Anfang und am Ende habe ich zu .* vereinfacht und um die Auswahl habe ich Klammern gemacht -> Das scheint erst einmal zu machen, was Du erwartest.

Was Deine Tests woanders angeht (z.B. bei https://regex101.com/): Pattern.matches will einen kompletten Match haben. Also das Pattern entspricht sozusagen ^Pattern$. Ein patten von "(?i)(berater|consultant)" würde false ausgeben - aber bei regex101 würde dir der Match selbst angezeigt - aber eben nicht als kompletter Match.
 
kneitzel

kneitzel

Top Contributor
Mit (\\W|^|.*) am Anfang und mit(\\W|$) am Ende möchte ich dass das gesuchte Wort am Satzanfang,1wConsultant,,, und hier auch also überall gefunden wird.
Du gibst mit etwas und ich prüfe:
Ist es ein 10€ Schein oder ist es ein 20€ Schein oder ist es einfach irgendwas oder nichts: Da machen die ersten Kriterien doch keinen Sinn!
a || b || true -> so a und b nichts aktives sind, die Du gerne ausführen möchtest: Dieser Ausdruck macht keinen Sinn, da er immer wahr ist.
 
Dimax

Dimax

Bekanntes Mitglied
Danke schon,jetzt geht's. Ich dachte das .* fängt nicht ab ,wenn das gesuchte Wort am Satzanfang oder am Satzende ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
K substitute mit regex Java Basics - Anfänger-Themen 10
G RegEx Java Basics - Anfänger-Themen 11
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
M Regex zum Integer.parseInt Java Basics - Anfänger-Themen 4
G Regex Java Basics - Anfänger-Themen 4
M Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L}) Java Basics - Anfänger-Themen 5
M Regex anpassen Java Basics - Anfänger-Themen 19
C Regex-Problem Java Basics - Anfänger-Themen 4
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5
C Positive und negative Zahlen mit Regex extrahieren Java Basics - Anfänger-Themen 8
F RegEx für Email Java Basics - Anfänger-Themen 2
F RegEx "+" nur als Zeichen, nicht als Operator oder Sonstiges Java Basics - Anfänger-Themen 2
FelixN RegEx aus einem String als String-Array zurückgeben Java Basics - Anfänger-Themen 8
FelixN RegEx Erläuterung "ˆ[ˆa-zA-Z]+$" Java Basics - Anfänger-Themen 6
F Regex Hilfe Java Basics - Anfänger-Themen 3
I Regex findet keine Treffer Java Basics - Anfänger-Themen 4
C Regex Java Basics - Anfänger-Themen 2
C Probleme bei Regex Java Basics - Anfänger-Themen 9
B Regex ignorieren von Groß - Kleinschreibung Java Basics - Anfänger-Themen 1
F Regex für Inlineformatierungen Java Basics - Anfänger-Themen 12
W Einfachen, ein beliebiges Zeichen oft erkennenden Regex Parser selber schreiben - wie vorgehen? Java Basics - Anfänger-Themen 12
O Regex Java Basics - Anfänger-Themen 2
F Switch Case Problem mit Regex lösen? Java Basics - Anfänger-Themen 6
H regex-Problem Java Basics - Anfänger-Themen 2
F Ist das ein korrekter Regex-Ausdruck? Java Basics - Anfänger-Themen 12
M Zahlenbereich mit RegEx Java Basics - Anfänger-Themen 3
B Hilfe bei Regex - Erstellung Java Basics - Anfänger-Themen 5
D regex Aufbau Frage Java Basics - Anfänger-Themen 4
W RegEx Matcher + Pattern und Emails Java Basics - Anfänger-Themen 8
R Rechenzeichen als regex Java Basics - Anfänger-Themen 10
S Ich verstehe die RegEx Tabelle von Javadoc nicht so ganz Java Basics - Anfänger-Themen 3
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
F RegEx Problem Java Basics - Anfänger-Themen 8
F Regex Hilfe Java Basics - Anfänger-Themen 14
G String nach Contains/Regex Java Basics - Anfänger-Themen 2
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
K RegEx - Multiple Line Java Basics - Anfänger-Themen 3
S Regex Pattern Java Basics - Anfänger-Themen 3
K Regex: illegal character range Java Basics - Anfänger-Themen 4
F RegEX Hilfe Java Basics - Anfänger-Themen 8
U Regex für kommaseparierte Zahlen Java Basics - Anfänger-Themen 1
K Operatoren Regex für 10er Zahlen Java Basics - Anfänger-Themen 8
V Java Regex richtig parsen Java Basics - Anfänger-Themen 2
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
N mein RegEx Java Basics - Anfänger-Themen 2
C Lösung für RegEx in Java gesucht Java Basics - Anfänger-Themen 2
B Java - Reguläre Ausdrücke - RegEx oder Regular Expressions - Eckige Klammern Java Basics - Anfänger-Themen 2
M Regex/matcher Java Basics - Anfänger-Themen 2
T Methoden String.matches() - Regex Java Basics - Anfänger-Themen 2
truesoul Regex für www Java Basics - Anfänger-Themen 0
N Methoden Straßennamen und Hausnummer - RegEx Java Basics - Anfänger-Themen 19
W Erste Schritte Regex negieren Java Basics - Anfänger-Themen 3
W String match mit Wildcard ODER Regex Java Basics - Anfänger-Themen 1
E useDelimiter-Anwednung / Regex Java Basics - Anfänger-Themen 2
C java regex Java Basics - Anfänger-Themen 2
C Regex zum matchen ausserhalb von Tags Java Basics - Anfänger-Themen 3
O Regex zwischenspeichern Java Basics - Anfänger-Themen 6
O Regex Java Basics - Anfänger-Themen 5
R Einfacher Regex Java Basics - Anfänger-Themen 3
V RegEx Java Basics - Anfänger-Themen 15
HoloYoitsu Datentypen replaceAll() mit regex? Java Basics - Anfänger-Themen 5
G regex Verständnis Problem Java Basics - Anfänger-Themen 3
G verwendung von regex Java Basics - Anfänger-Themen 3
X Regex splitten Java Basics - Anfänger-Themen 5
T Regex Problem Java Basics - Anfänger-Themen 4
B String nach regex überprüfen Java Basics - Anfänger-Themen 6
J Regex Ausdrücke im Array - Wieso werden sie nicht erkannt? Java Basics - Anfänger-Themen 4
N Regex Java Basics - Anfänger-Themen 4
F String.replaceAll() funktioniert nicht richtig oder habe ich den falschen Regex?? Java Basics - Anfänger-Themen 3
J Regex mit Return Java Basics - Anfänger-Themen 3
I Rechenoperatoren mit Regex splitten Java Basics - Anfänger-Themen 12
F Methoden replaceAll (regex) HTML Java Basics - Anfänger-Themen 3
H Problem mit Regex in Verbindung mit BufferedReader Java Basics - Anfänger-Themen 4
A Hilfe mit RegEx Java Basics - Anfänger-Themen 8
F OOP Warum funktioniert dieser Regex? Java Basics - Anfänger-Themen 15
B OOP einfaches regex Java Basics - Anfänger-Themen 10
S OOP Regex Pattern Java Basics - Anfänger-Themen 2
Helgon Regex Split Java Basics - Anfänger-Themen 2
R Regex Problem Java Basics - Anfänger-Themen 3
G Regex für 1 und 2 gesucht Java Basics - Anfänger-Themen 18
R Suche Regex Ausdruck für HTML Java Basics - Anfänger-Themen 11
K Regex - Jeder buchstabe nur einmal Java Basics - Anfänger-Themen 7
M Java RegEx bei Website?!? Java Basics - Anfänger-Themen 5
R RegEx - Escapen Java Basics - Anfänger-Themen 5
T RegEx in Java? Java Basics - Anfänger-Themen 3
D Regex mit Werten aus txt Datei Java Basics - Anfänger-Themen 2
S Datentypen Regex in Verbindung mit einem Integer Wert Java Basics - Anfänger-Themen 3
G RegEx werden nicht erkannt Java Basics - Anfänger-Themen 7
M RegEx Pattern Matcher Java Basics - Anfänger-Themen 16
J Regex um Inhalte zwischen Tags zu ignorieren Java Basics - Anfänger-Themen 2
P RegEx Muster mehrfach treffen Java Basics - Anfänger-Themen 2
R Pattern bzw. Regex HTML-Code Java Basics - Anfänger-Themen 10
N RegEx Wort anzeigen Java Basics - Anfänger-Themen 6
C Regex String splitten Java Basics - Anfänger-Themen 5
A Regex Java Basics - Anfänger-Themen 7
A String mittels RegEx filtern Java Basics - Anfänger-Themen 13
S Regex - alle Matches ausgeben? Java Basics - Anfänger-Themen 2
H Konkrete Regex Frage Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Anzeige

Neue Themen


Oben