Regexp Pattern & Matcher Problem

N

Nestos

Gast
Ich versuche schon seit mehreren Tagen mit Pattern und Matcher klarzukommen, schaff es aber einfach nicht.
Nach 2 Tagen erfolglosem Googeln habe ich beschlossen, ein Java Forum aufzusuchen und bin schließlich hier gelandet.

Nun zu meinem Problem:
Ich habe eine beliebige Zeichenkette, die sich immer zwischen zwei gleichen Zeichenketten befindet und mehrmals im gesamten String vorkommt.
Nun will ich immer die Zeichenkette die zischen den anderen beiden liegt ausgeben.
So weit so gut, wo liegt das Problem?

Probiert habe ich es indem ich eine ganze Datei eingelesen habe und sie dann gepattert habe.
Java:
Pattern pattern = Pattern.compile("<p class=\"question\" style=\"margin:0cm;margin-bottom:.0001pt\">(.*)</p>");

Nun gibt er mir allerdings ein falsches Ergebnis aus.

Mein Beispiel:
Java:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.IOException;

public class IndexCreator
{
	public static void main(String[] args) throws IOException
	{
		Pattern pattern = Pattern.compile("<p class=\"question\" style=\"margin:0cm;margin-bottom:.0001pt\">(.*)</p>");
		
		String test = "<p class=\"question\" style=\"margin:0cm;margin-bottom:.0001pt\">Q:" + " " +
		"Ich bin die Frage Nummer 1." + " " + 
		"<p class=\"question\" style=\"margin:0cm;margin-bottom:.0001pt\">Q:" + " " +
		"Ich bin die Frage Nummer 2.</p>";
		
		Matcher matcher = pattern.matcher(test);
		while (matcher.find())
		{
			System.out.println(matcher.group(1));
		}
	}
}

Die Ausgabe:
Code:
Q: Ich bin die Frage Nummer 1. <p class=\"question\" style=\"margin:0cm;margin-bottom:.0001pt\">Q: Ich bin die Frage Nummer 2.

MfG,
Nestos.
 

TiJay

Mitglied
Dein String lautet wie folgt:

HTML:
<p class="question" style="margin:0cm;margin-bottom:.0001pt">Q: Ich bin die Frage Nummer 1.  
    <p class="question" style="margin:0cm;margin-bottom:.0001pt">Q: Ich bin die Frage Nummer 2.</p>

Fällt dir was auf? Bei der ersten Frage fehlt das schließende [c]</p>[/c].

Daher interpretiert der Matcher das erste [c]<p...[/c] als Start des Patterns, was mit [c]</p>[/c] ganz am Ende erst wieder beendet wird. Also alles korrekt gematcht, lediglich deine Eingabe ist syntaktisch falsch.

Gruß,
Timo
 
Zuletzt bearbeitet:
N

Nestos

Gast
Auch wenn ich dort ein </p> einfüge passiert haargenau das selbe wie vorher.

Java:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.IOException;
 
public class IndexCreator
{
    public static void main(String[] args) throws IOException
    {
        Pattern pattern = Pattern.compile("<p class=\"question\" style=\"margin:0cm;margin-bottom:.0001pt\">(.*)</p>");
        
        String test = "<p class=\"question\" style=\"margin:0cm;margin-bottom:.0001pt\">Q:" + " " +
        "Ich bin die Frage Nummer 1.</p>" + " " + 
        "<p class=\"question\" style=\"margin:0cm;margin-bottom:.0001pt\">Q:" + " " +
        "Ich bin die Frage Nummer 2.</p>";
        
        Matcher matcher = pattern.matcher(test);
        while (matcher.find())
        {
            System.out.println(matcher.group(1));
        }
    }
}
 
N

Nestos

Gast
Du must non gredy suchen. heißt konkret nutzte .*? statt .*

Danke vielmals, dass hatte ich komplett übersehen!
Es funktioniert tadellos!

Java:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.IOException;
 
public class IndexCreator
{
    public static void main(String[] args) throws IOException
    {
        Pattern pattern = Pattern.compile("<p class=\"question\" style=\"margin:0cm;margin-bottom:.0001pt\">(.*?)</p>");
        
        String test = "<p class=\"question\" style=\"margin:0cm;margin-bottom:.0001pt\">Q:" + " " +
        "Ich bin die Frage Nummer 1.</p>" + " " + 
        "<p class=\"question\" style=\"margin:0cm;margin-bottom:.0001pt\">Q:" + " " +
        "Ich bin die Frage Nummer 2.</p>";
        
        Matcher matcher = pattern.matcher(test);
        while (matcher.find())
        {
            System.out.println(matcher.group(1));
        }
    }
}

MfG,
Nestos.

PS: Ich werde das Forum weiterempfehlen, so schnelle und vorallem brauchbare Antworten bekommt man selten wo. ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L RegExp bzw Pattern in Java Java Basics - Anfänger-Themen 6
D regexp-pattern .. letzter schliff Java Basics - Anfänger-Themen 6
Z regexp/pattern für dateipfad Java Basics - Anfänger-Themen 5
Y Hilfe bei Pattern-Regexp Java Basics - Anfänger-Themen 5
G Java Regex / Pattern etc. <-> Jakarta RegExp Java Basics - Anfänger-Themen 6
D RegExp .txt-Datei einlesen Java Basics - Anfänger-Themen 6
D Regexp einer Auflistung Java Basics - Anfänger-Themen 9
B RegExp in Java Java Basics - Anfänger-Themen 5
Y Regexp gesucht Java Basics - Anfänger-Themen 6
R Regexp nur Buchstaben und Ziffener beliebig oft Java Basics - Anfänger-Themen 3
D Regexp Java Basics - Anfänger-Themen 3
M RegExp: String in Array Java Basics - Anfänger-Themen 7
S RegEXP Java Basics - Anfänger-Themen 3
S Regexp Java Basics - Anfänger-Themen 4
K RegExp - Problem Java Basics - Anfänger-Themen 4
G JAVA: RegExp Java Basics - Anfänger-Themen 3
C regexp gibt immer false aus Java Basics - Anfänger-Themen 4
G Suche RegExp Java Basics - Anfänger-Themen 4
lhein RegExp - Frage Java Basics - Anfänger-Themen 6
M RegExp mit "Untergruppen" - wie komme ich an die? Java Basics - Anfänger-Themen 4
G RegExp Java Basics - Anfänger-Themen 21
G Mittels RegExp "Variablen" extrahieren Java Basics - Anfänger-Themen 4
D was ist der vorteil vom Builder-design pattern? Java Basics - Anfänger-Themen 11
W GoF-Pattern im Programmierer-Alltag Java Basics - Anfänger-Themen 113
D Java Pattern mit X Ausgabe Stern Java Basics - Anfänger-Themen 4
J Methoden Observer-Pattern mit Consumer und accept( ) Java Basics - Anfänger-Themen 6
Dimax Erste Schritte Pattern.matcher,die Besonderheiten. Java Basics - Anfänger-Themen 12
N Best Practice Frage zum MVC-Pattern Java Basics - Anfänger-Themen 2
J Implementierung von Observer und Singleton-Pattern Java Basics - Anfänger-Themen 9
F Design pattern Java Basics - Anfänger-Themen 29
W RegEx Matcher + Pattern und Emails Java Basics - Anfänger-Themen 8
M Schlüsselworte Unterschied: String.matches und Pattern.compile Java Basics - Anfänger-Themen 2
C Best Practice JTable in MVC Pattern Java Basics - Anfänger-Themen 7
D Design Pattern Command Java Basics - Anfänger-Themen 3
Bregedur Methoden Matcher und Pattern bei sich wiederholenden Werten Java Basics - Anfänger-Themen 1
fLooojava MVC Pattern und Observer Pattern Java Basics - Anfänger-Themen 6
S Regex Pattern Java Basics - Anfänger-Themen 3
Z Pattern und Matcher substring zu String möglich? Java Basics - Anfänger-Themen 4
B Pattern für Email Liste Java Basics - Anfänger-Themen 3
J Builder Pattern implementieren Java Basics - Anfänger-Themen 3
Tarrew Proxy Design-Pattern Java Basics - Anfänger-Themen 1
M Methoden Pattern Matching Vokal Java Basics - Anfänger-Themen 2
agent47 Pattern split Java Basics - Anfänger-Themen 2
J MVC Pattern, mehrere Controller/Views/Models Java Basics - Anfänger-Themen 0
B Strategy Pattern - Rechner Java Basics - Anfänger-Themen 6
I Vertändnisfrage zu Prototype Pattern Java Basics - Anfänger-Themen 0
L Kompositum-Pattern Hilfe :O Java Basics - Anfänger-Themen 4
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
S Je nach erhaltene Daten unterschiedlich reagieren (Design Pattern?) Java Basics - Anfänger-Themen 3
B Pattern Matching ohne Match-Methoden Java Basics - Anfänger-Themen 11
Furtano OOP Memento Pattern | übergabe einer Kopie des Arrays Java Basics - Anfänger-Themen 0
F Erste Schritte Pattern zum Zerlegen von selbstdefinierten Dateinamen Java Basics - Anfänger-Themen 7
M MVC + Strategy Pattern Ansatz (mit Code) Java Basics - Anfänger-Themen 5
A Design Pattern - Welche? Java Basics - Anfänger-Themen 33
Rudolf OOP Übungen zu Design Pattern in Java Java Basics - Anfänger-Themen 6
A Observer Pattern Problem Java Basics - Anfänger-Themen 15
J Interface Frage zu Interfces am Beispiel Observer Pattern Java Basics - Anfänger-Themen 8
S OOP Regex Pattern Java Basics - Anfänger-Themen 2
P Grundsatzfrage zu Decorator-Pattern Java Basics - Anfänger-Themen 6
L Pattern Matching Java Basics - Anfänger-Themen 3
Helgon Observer Pattern - hasChanged() immer false Java Basics - Anfänger-Themen 10
R aktualisierung des View im MVC-Pattern Java Basics - Anfänger-Themen 5
M RegEx Pattern Matcher Java Basics - Anfänger-Themen 16
R Pattern bzw. Regex HTML-Code Java Basics - Anfänger-Themen 10
I OOP Verständnisfrage zu Singelton Pattern Java Basics - Anfänger-Themen 21
R Welches Design pattern Java Basics - Anfänger-Themen 10
B static und Pattern matching Java Basics - Anfänger-Themen 22
T pattern klappt nicht so Java Basics - Anfänger-Themen 6
T Decorator Pattern Java Basics - Anfänger-Themen 7
A Pattern und Matcher Java Basics - Anfänger-Themen 9
T Frage zu Pattern/Matcher Java Basics - Anfänger-Themen 6
D Pattern in Midi-Sequencer Java Basics - Anfänger-Themen 2
V Frage zu Decorator-Pattern Java Basics - Anfänger-Themen 4
S OOP Factory Pattern Java Basics - Anfänger-Themen 2
C OOP Observer Pattern Java Basics - Anfänger-Themen 2
M Regex-Pattern Java Basics - Anfänger-Themen 2
Haubitze_Broese Pattern für Links in RSS-Reader Java Basics - Anfänger-Themen 6
Raidri Pattern liefert false Java Basics - Anfänger-Themen 9
megachucky regex-Problem ( mit den Klassen Matcher / Pattern) --> XML prüfen Java Basics - Anfänger-Themen 11
O useDelimiter / Muster im Parameter (Pattern) Java Basics - Anfänger-Themen 6
S Problem mit Pattern Java Basics - Anfänger-Themen 2
S Pattern.matches mit Ignore Case Java Basics - Anfänger-Themen 2
N in int array einen pattern(eine zahl) finden Java Basics - Anfänger-Themen 21
A Hilfe zu Pattern Java Basics - Anfänger-Themen 2
Y Pattern Java Basics - Anfänger-Themen 2
A Proxy Pattern implementieren Java Basics - Anfänger-Themen 2
N OOP MVC Pattern Java Basics - Anfänger-Themen 3
G Probleme mit Pattern und Aussagenlogik Java Basics - Anfänger-Themen 6
H Verständnis Strategy Pattern Java Basics - Anfänger-Themen 4
A ist das ein Singleton-Pattern? Java Basics - Anfänger-Themen 6
A Factory Pattern Java Basics - Anfänger-Themen 2
D Objekte anlegen und Singleton Pattern Java Basics - Anfänger-Themen 21
O Erklärung für Pattern Java Basics - Anfänger-Themen 5
U Java Pattern Regex Java Basics - Anfänger-Themen 9
0 Probleme mit Pattern und Matcher Java Basics - Anfänger-Themen 5
K Observer Pattern notifyObservers Java Basics - Anfänger-Themen 9
S geeignetes Such Pattern Java Basics - Anfänger-Themen 6
J Zugriff mit Visitor Pattern auf eigen erstellte verk. Liste Java Basics - Anfänger-Themen 3
J Visitor Pattern Java Basics - Anfänger-Themen 4
W Observer-Pattern Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben