K
Kool
Gast
Hallo,
ich habe ein kleines Programm geschrieben, dass sich im Moment in der Main-Methode befindet und später in eine Objekt-Klasse implementiert werden soll. Das Programm ließt eine Textdatei aus und geht diese zeilenweise durch.
Eine geparste Text-Datei wird später nach folgendem Muster aussehen:
Mit Regular Expressions möchte ich testen folgendes Testen:
- ob Zeile 1 ein "x=" und danach eine Ganzzahl zwischen 1 und 4 Stellen enthält
- ob Zeile 2 ein "y=" und danach eine Ganzzahl zwischen 1 und 4 Stellen enthält
- ob Zeile 3 bis n zwei Int-Werte, getrennt durch ein Komma enthalten
Diese Idee habe ich vor mit Hilfe einer Schleife zu realisieren... Jedoch habe ich vorab mal getestet, ob ich die Prüfungen mit Hilfe der RegEx hinbekomme.
Hier mal mein Code, der eine Text-Datei mit den weiter oben im Beitrag geposteten Werten, einliest und prüft, ob Zeile 1 im Stil "x=IntIntIntInt" vorliegt. Ich bekomme immer ein false, verstehe jedoch nicht warum:
Ich habe es auch schon probiert, indem ich meinen RegEx folgendermaßen abgeändert habe:
Aber selbst ein x=, was die ersten 2 Zeichen im StringBuilder-Objekt sind, findet er nicht. Ist was an meinem Pattern-Ausdruck falsch?
Gruß, Kool
ich habe ein kleines Programm geschrieben, dass sich im Moment in der Main-Methode befindet und später in eine Objekt-Klasse implementiert werden soll. Das Programm ließt eine Textdatei aus und geht diese zeilenweise durch.
Eine geparste Text-Datei wird später nach folgendem Muster aussehen:
Code:
x=200
y=150
1,1
2,1
3,5
Mit Regular Expressions möchte ich testen folgendes Testen:
- ob Zeile 1 ein "x=" und danach eine Ganzzahl zwischen 1 und 4 Stellen enthält
- ob Zeile 2 ein "y=" und danach eine Ganzzahl zwischen 1 und 4 Stellen enthält
- ob Zeile 3 bis n zwei Int-Werte, getrennt durch ein Komma enthalten
Diese Idee habe ich vor mit Hilfe einer Schleife zu realisieren... Jedoch habe ich vorab mal getestet, ob ich die Prüfungen mit Hilfe der RegEx hinbekomme.
Hier mal mein Code, der eine Text-Datei mit den weiter oben im Beitrag geposteten Werten, einliest und prüft, ob Zeile 1 im Stil "x=IntIntIntInt" vorliegt. Ich bekomme immer ein false, verstehe jedoch nicht warum:
Code:
import java.io.*;
import java.util.regex.*;
public class Controller {
public static void main(String[]args) throws IOException {
// Variablen
StringBuilder lineValuesInString = new StringBuilder();
String[] lineValues;
// Öffnen der Text-Datei
BufferedReader load = new BufferedReader(
new FileReader (
new File("Welt.txt")));
// Alle Zeilen der Textdatei durchlaufen und in Zeichenkette getrennt durch ":" speichern
for(String line; (line=load.readLine()) !=null;) {
lineValuesInString.append(line + ":");
}
Pattern p = Pattern.compile("x=\\d{1,4}");
Matcher m = p.matcher(lineValuesInString);
System.out.println(lineValuesInString); // Ausgabe: x=200:y=150:1,1:2,1:3,5:
System.out.println(m.matches()); // Ausgabe false
}
}
Ich habe es auch schon probiert, indem ich meinen RegEx folgendermaßen abgeändert habe:
Code:
Pattern p = Pattern.compile("x=");
Aber selbst ein x=, was die ersten 2 Zeichen im StringBuilder-Objekt sind, findet er nicht. Ist was an meinem Pattern-Ausdruck falsch?
Gruß, Kool