Matcher matcht nicht

HPL

Aktives Mitglied
Ich habe ein Programm mit zwei Klassen.

Dies ist die Klasse mit der Mainmethode, es wird hier ein Textdokument eingelesen.
Java:
import java.io.*;

public class NGramMain{

	/**
	 * @param args
	 */
	public static void main (String[] args) {
		
		String lines = "";
		
		BufferedReader br = null;
		try{
			br = new BufferedReader(new FileReader("C:\\ ...\\meinText.txt"));
			
			String line = br.readLine();
			
			while(line != null){
			
				lines += line;
				line = br.readLine();}
			
			br.close();
			}catch(IOException e){e.printStackTrace();}
		
		
		NGram ng = new NGram(args[0], lines);
        ng.yield();
		
	}
}

Die yield-Methode ist in der anderen Klasse:

Java:
import java.lang.System;
import java.util.regex.*;
import java.util.ArrayList;

public class NGram {

	private String NUM, text;
	
	public NGram(String NUM, String text){
		this.NUM = NUM;
		this.text = text;
	}
	
	
	public int getNUM(){ int i = Integer.parseInt(this.NUM);
	                     return i;   }
	
	
	public String gettext(){ 
		                 return this.text; }
	
	
	public void yield(){
		
		int i = this.getNUM();
		String t = this.gettext();
				
//Here, I bereave the String from unnecessary punctuation.

		String punctuation = ".,:;_!?)(";
		for(int a=0;a<punctuation.length();a++){
              t = t.replace(punctuation.substring(a,a+1), "");}

		ArrayList<String> words = new ArrayList<String>();
		
		for(String word : t.split(" ")){  words.add(word);  }; 
		
		for(int d=0;d<words.size();d++){

		Matcher empty = Pattern.compile("[\\s]+").matcher(words.get(d));

                        if(empty.matches()){  words.remove(d);  }
                                                                                      
}
		
		
		for(int a=0;a<(words.size()-i);a++){
		  	    
	         System.out.println(words.get(a));}
	  
	}
}



Meine Frage betrifft nu die Klasse NGram, dort die Zeilen 40-42:

Ich will aus der ArrayList words alle Elemente heraushaben, die ein oder mehrere Leerzeichen, also " ", " " usw.enthalten.

Nichtsdestotrotz wird

bei diesem eingelesenen Text:

Ich habe nun einen Text - das ist wahr -, in dem New York vorkommt.

folgendes ausgedruckt:

Ich
habe
nun
einen
Text
-
das
ist
wahr
-
in










dem
New








Nun frage ich mich: Woran liegt denn das??
 
G

Gast2

Gast
Lass dir doch mal ausgeben was
Code:
words.get(d)
ist. Der Matcher funktioniert, dein Regex ist auch richtig.

Du wirst aber bei einer schleife so auch ne ConcurrentModificationException bekommen bei dem remove.
 

XHelp

Top Contributor
Es liegt vermutlich darin, dass die Strings nun mal keine Leerzeichen enthalten, du splittest ja vorher nach den Leerzeichen, da können keine im den Wörtern auftauchen.
Was du vermutlich willst ist entweder nach
Code:
\s+
zu splitten oder
Code:
words.get(d).isEmpty
überprüfen.

Darüber hinaus wird dein Löschen nicht funktionieren. Du wirst Elemente überspringen. Schau dir für solche Sachen [japi]Iterator[/japi] an.
 

HPL

Aktives Mitglied
@XHelp: Danke!!! Ich war zu töricht, mit zu überlegen, dass man der split()-Methode auch einen regex übergeben kann (wie ich dies in Zeile 38 getan habe).

Wenn ich in Z. 38 nicht mit "\\s+", sondern mit " " gesplittet hätte, dann hätte ich zudem das, was weggesplittet wurde, ohnehin in keiner Form matchen können.

Das ganze Ding (also die Klasse mit der Main habe ich ja nicht verändert) dient übrigens dazu, aus einem Text, in dem 2 (oder 3 oder 4, je nach dem, welche Zahl als arg[0] übergeben wird) Wörter hintereinander groß geschrieben werden (wobei Wörter, die mit - verbunden sind, nicht als 2 unterschiedliche Wörter zählen), auszusortieren und in eine Datenstruktur zu setzen. Problem ist halt noch: Was stelle ich mit den Wörtern an, die nach . stehen und folglich groß geschrieben werden, aber das mach ich ein andermal. Hätte ich mehr Grips, hätt ich das freilich besser gelöst.

Java:
import java.lang.System;
import java.util.regex.*;
import java.util.ArrayList;

public class NGram {

	private String NUM, text;
	
	public NGram(String NUM, String text){
		this.NUM = NUM;
		this.text = text;
	}
	
	
	public int getNUM(){ int i = Integer.parseInt(this.NUM);
	                     return i;   }
	
	
	public String gettext(){ 
		                 return this.text; }
	
	
	public void yield(){
		
		int i = this.getNUM();
		String t = this.gettext();
		
		ArrayList<String[]> ALLNGRAMS = new ArrayList<String[]>();
		
		//Here, I bereave the String from unnecessary punctuation.

		String punctuation = ".,:;_!?)(";
		for(int a=0;a<punctuation.length();a++){
        t = t.replace(punctuation.substring(a,a+1), "");}

		ArrayList<String> words = new ArrayList<String>();
		
		for(String word : t.split("\\s+")){  words.add(word);  }; 
				
		for(int a=0;a<(words.size()-i);a++){
		  
	      String[] NGRAMS = new String[i];
	      
			for(int b=0;b<i;b++){
				Matcher m = Pattern.compile("[A-Z]").matcher(words.get(a+b).substring(0, 1)); 
			    if(! m.matches()){break;}
			    if(m.matches()){ NGRAMS[b] = words.get(a+b); }
			                    }
			
		if( NGRAMS[i-1] != null ){ ALLNGRAMS.add(NGRAMS); }	              
			                                             }

		
		for(int c=0;c<ALLNGRAMS.size();c++){
			
			for(int d=0;d<ALLNGRAMS.get(c).length;d++){ System.out.println(ALLNGRAMS.get(c)[d]);  }
			
		}
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Dimax Erste Schritte Pattern.matcher,die Besonderheiten. Java Basics - Anfänger-Themen 12
W RegEx Matcher + Pattern und Emails Java Basics - Anfänger-Themen 8
Bregedur Methoden Matcher und Pattern bei sich wiederholenden Werten Java Basics - Anfänger-Themen 1
Z Pattern und Matcher substring zu String möglich? Java Basics - Anfänger-Themen 4
M Regex/matcher Java Basics - Anfänger-Themen 2
M RegEx Pattern Matcher Java Basics - Anfänger-Themen 16
N Regexp Pattern & Matcher Problem Java Basics - Anfänger-Themen 4
A Pattern und Matcher Java Basics - Anfänger-Themen 9
T Frage zu Pattern/Matcher Java Basics - Anfänger-Themen 6
megachucky regex-Problem ( mit den Klassen Matcher / Pattern) --> XML prüfen Java Basics - Anfänger-Themen 11
0 Probleme mit Pattern und Matcher Java Basics - Anfänger-Themen 5
K Probleme mit RegEx (Pattern und Matcher) Java Basics - Anfänger-Themen 2
F Pattern und Matcher Java Basics - Anfänger-Themen 4
A Matcher Java Basics - Anfänger-Themen 7
T Matcher.replaceAll Java Basics - Anfänger-Themen 2
A Signierte Exe Datei funktioniert nicht mehr Java Basics - Anfänger-Themen 1
A Signierte Exe Datei funktioniert nicht mehr Java Basics - Anfänger-Themen 3
C my_table.setRowSelectionAllowed(true) funktioniert nicht; Java Basics - Anfänger-Themen 0
B Warum funktioniert die Lösung von CodeGym aber meine nicht? Java Basics - Anfänger-Themen 3
P Wo NUR (!) JRE v18 oder v21 herunterladen? Also nicht volles JDK Java Basics - Anfänger-Themen 1
J shuffle cards wird nicht ausgeführt. Java Basics - Anfänger-Themen 2
J JTextField -> CaretPos bei SelectionStart() setzten nicht bei SelectionEnd() Java Basics - Anfänger-Themen 20
W Java-PRogramm liest als EXE-File Nicht USB, jedoch aus NetBeans Java Basics - Anfänger-Themen 45
I Webservice funktioniert nicht Java Basics - Anfänger-Themen 5
C Abbruch einer Schleife mit break, meine Übung funktioniert nicht richtig Java Basics - Anfänger-Themen 4
SarahXyy Ergebnisse stimmen nicht überein? Java Basics - Anfänger-Themen 11
thomas55 Erste Schritte Modul läuft in IntelliJ, nicht in NetBeans Java Basics - Anfänger-Themen 11
G Nicht ausführbares JAR, externe jars mit einbinden Java Basics - Anfänger-Themen 7
S Erstes Programm: Hallo Welt funktioniert nicht. Java Basics - Anfänger-Themen 3
O Obfuscateter Code lässt sich nicht ausführen? Java Basics - Anfänger-Themen 7
A "Hello World"-Programm läuft nicht Java Basics - Anfänger-Themen 16
G Regex greift nicht richtig Java Basics - Anfänger-Themen 4
G JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
G JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
G JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
G .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
K TicTacToe belegtes feld nicht neu besetzbar Java Basics - Anfänger-Themen 1
K TicTacToe belegtes Feld nicht neu besetzbar Java Basics - Anfänger-Themen 3
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
missy72 Erste Schritte (nicht) Deterministischer endlicher Automat Java Basics - Anfänger-Themen 9
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
P Netbeans installation geht nicht Java Basics - Anfänger-Themen 26
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T scanner nicht erkannt Java Basics - Anfänger-Themen 3
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
Darkherobrine9 Import klappt nicht Java Basics - Anfänger-Themen 7
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
C Kann mir jemand sagen warum ich nicht mal rechnen kann ? Java Basics - Anfänger-Themen 32
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
A JavaFX-Anwendung läuft nicht mit Selenium WebDriver Java Basics - Anfänger-Themen 0
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
heinrich172 Methoden Trotz gleichem Element stimmt Vergleich nicht? Java Basics - Anfänger-Themen 7
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben