2017-05-26 1 views
1

Ich bin neu in Java zu codieren und versuche derzeit, Regex-Muster-Übereinstimmungen zu verwenden. Aber aus irgendeinem Grund wird die Regex einfach nichts zusammenbringen. Mein Code ist wie folgt:Regex dösen Endergebnis

if(scan.hasNext("append\\s[a-zA-Z0-9]*")){ 
    //do stuff 
} 

aber wenn ich Eingang „anhängen Hallo“, es Spiel won't.

Könnte mir bitte jemand sagen, warum?

+0

Siehe [Versuch, 2 Wörter aus einer Datei in Java zu lesen] (https://stackoverflow.com/questions/25702124/trying-to-read-2-words-from-a-file-in-java). –

Antwort

3

Sie haben matches zum Beispiel verwenden:

"append hello".matches("append\\s[a-zA-Z0-9]*") 

können Sie verwenden:

if (scan.nextLine().matches("append\\s[a-zA-Z0-9]*")) { 
    System.out.println("Match"); 
} 
+1

Dies führt zu dem Kompilierungsfehler: Symbol kann nicht gefunden werden, muss ich etwas importieren? – CharlieTr

+0

Ich denke, Sie etwas falsch verstanden haben, überprüfen Sie meine Bearbeitung, 'scan.hasNext' zurückgeben, so dass Sie keine Übereinstimmungen damit verwenden können, können Sie' scan.nextLine(). Übereinstimmungen ("append \\ s [a-] zA-Z0-9] * ")' stattdessen @CharlieTr –

0

Das Problem ist, dass die Standardtrennzeichen für eine Scanner (was ich davon ausgehen, ist scan) ist ein Leerzeichen, also werden die Tokens: append und hello, und keines entspricht dem Muster.

Sie können das Trennzeichen auf etwas gesetzt anderes, zum Beispiel eine Linie Separator:

Scanner scan = new Scanner(System.in); 
scan.useDelimiter(System.lineSeparator()); 

if (scan.hasNext("append\\s[a-zA-Z0-9]*")) { 
    // ... 
} 

Wenn ich jetzt Eingang append hello ich ein Spiel zu tun bekommen.

Verwandte Themen