Pattern bzw. Regex HTML-Code

Reality

Top Contributor
Hi,
ich versuche über ein Pattern bestimmten HTML-Code herauszulesen, nur wird leider gar nichts gefunden.



Java:
Scanner in = new Scanner(new FileReader(file));

while (in.hasNext("<h2 class=\"im_text\">.*?</h2>") ) {
         sb.append(in.next("<h2 class=\"im_text\">.*?</h2>"));

         System.out.println(sb.toString());
}

Hat jemand eine Idee, wo der Fehler ist? Danke im Voraus!

Liebe Grüße
Reality
 
Zuletzt bearbeitet von einem Moderator:

eRaaaa

Top Contributor
Naja hasNext schaut ob das nächste Token passt..der von dir gesuchte Code steht doch aber sicherlich irgendwo in dem HTML oder nicht? Und was willst du mit dem in.next erreichen? Du willst doch vermutlich das herausziehen was jetzt innerhalb des Tags steht oder? Also in .*? <-- ?! Mache ne Gruppe draus und benutze in.match() mit findWithinHorizon !

Also in etwa
Java:
		while (in.findWithinHorizon("<h2 class=\"im_text\">(.*?)</h2>", 0) != null) {
			sb.append(in.match().group(1));
		}
 
S

SlaterB

Gast
@Reality
von einem File zu schreiben und keine Zeile als Testfall hier ins Forum zu posten zeugt schon von bedenklicher Intelligenz,
so muss man es leider mal sagen

".*?" ist ansonsten noch ein nie zu verwendendes Pattern, was soll das deiner Ansicht nach leisten?

-----

nach kurzem Test vermute ich, dass Scanner wie üblich die Token bei Leerzeichen trennt und diese per Pattern nur einzeln abfragbar sind:
Java:
public class Test {
    public static void main(String[] args)  {
        Scanner in = new Scanner("<h2 h2>");
        StringBuilder sb = new StringBuilder();
        while (in.hasNext("<h2 h2>"))  {
            sb.append(in.next("<h2 h2>"));
            System.out.println("doppelt: " + sb.toString());
        }
        while (in.hasNext("<?h2>?"))   {
            sb.append(in.next("<?h2>?"));
            System.out.println("einzeln: " + sb.toString());
        }
    }
}
edit: ah, gibt ja noch bessere Methoden
 

Reality

Top Contributor
@Basti: Danke, super Code! :)

@SlaterB: Antworte am Besten gar nicht, wenn du weißt, dass du persönlich und unfreundlich wirst. Es ist noch kein Meister vom Himmel gefallen und ich habe schon ganz andere Fälle im Leben gesehen ohne persönlich zu werden...

L. G.
Reality
 

Reality

Top Contributor
Hi,
ich bin's nochmal. ;)

Habe nun ein komplexeres Problem:

Ich hätte gerne den Text zwischen zwei Überschriften herausgefiltet, die in dieser Form vorhanden sind:

[XML]<p class="x-berschrift1">Überschrift 1</p>
...
Jede Menge Text... <!-- Das hätte ich gerne extrahiert -->
...
<p class="x-berschrift1">Überschrift 2</p>[/XML]

Mein Versuch:

Java:
        Pattern pattern = Pattern.compile("<p class=\"x-berschrift1\">(.*?)</p>(.*?)<p class=\"x-berschrift1\">(.*?)");

        for (int i = 0; i < files.length; i++) {
            File file = files[i];
            try{
                Scanner in = new Scanner(new FileReader(file));

                while (in.findWithinHorizon(pattern, 0) != null) {
                    System.out.println(in.match().group(2));
                }
            } catch (FileNotFoundException e) {
                System.err.println(e.toString());
            }
        }

Bei dem Code wird aber leider nichts ausgegeben. Wo liegt der Fehler?

Danke, im Voraus!

L. G.
Reality
 

Reality

Top Contributor
Folgender Code ändert leider nichts :( :

Java:
Pattern pattern = Pattern.compile("<p class=\"x-berschrift1\">(.*?)</p>(.*?)<p class=\"x-berschrift1\">(.*?)", Pattern.MULTILINE);
 
S

SlaterB

Gast
wenn mir zu schreiben erlaubt wäre hätte ich dir die Lösung schon vor einer Stunde sagen können,
so aber zumindest ein Hinweis: schau dir die Beschreibungen bei MULTILINE und anderen Flags an,
MULTILINE ist leider wenig hilfreich, ein anderer schon..
 

Reality

Top Contributor
Unglaublich welchen Unterschied ein Flag machen kann. DOTALL hat weiter geholfen. Danke an SlaterB. ;)

Liebe Grüße
Reality
 

RySa

Bekanntes Mitglied
DOTALL bewirkt ja, dass . auch Zeilenumbrüche "annimt", was er standardmäßig nicht tut, daher ist es auch klar das so ein Flag in deinem Fall "so viel" bewirkt :)

Müsste es aber nicht eher so sein ?:
Java:
Pattern pattern = Pattern.compile("(?s).*?<p class=\"x-berschrift1\">.*?</p>(.*?)<p class=\"x-berschrift1\">.*?</p>");

Ich bin mir nicht sicher ob es bei dir nicht eventuell zu Problemem kommt, wenn du mehrere Texte zwischen mehreren Überschriften "rausfiltern" wolltest.

Ps. Ich habe die anderen .*? nicht gruppiert, da du sie in deinem Beispielcode nicht benutzt, und somit nur unnötige Informationen "speicherst". Wenn du sie aber doch verwendest, dann gehören die () natürlich dahin (außer der letzten Gruppe, wo du (.*?) hast, aber nichts mehr dahinter, obwohl da ein </p> hingehört. Ist ganz gefährlich. Das .*? kann dir dann den ganzen Text bis zum Schluss "auffressen" :p
 
Zuletzt bearbeitet:

Reality

Top Contributor
DOTALL bewirkt ja, dass . auch Zeilenumbrüche "annimt", was er standardmäßig nicht tut, daher ist es auch klar das so ein Flag in deinem Fall "so viel" bewirkt :)
Jo, vielleicht hätte ich auch vorher das hier lesen sollen:

Pattern (Java 2 Platform SE 5.0)

Aber, wenn man bei einer Sache noch am Anfang steht, weiß man noch nicht so genau, wo man anfangen soll und deswegen kann man auch solche essentielle Dinge übersehen. ;)

Müsste es aber nicht eher so sein ?:
Hmm, meine Version macht bei mehreren Überschriften und Texten auch keine Probleme.

Ps. Ich habe die anderen .*? nicht gruppiert, da du sie in deinem Beispielcode nicht benutzt, und somit nur unnötige Informationen "speicherst". Wenn du sie aber doch verwendest, dann gehören die () natürlich dahin (außer der letzten Gruppe, wo du (.*?) hast, aber nichts mehr dahinter, obwohl da ein </p> hingehört. Ist ganz gefährlich. Das .*? kann dir dann den ganzen Text bis zum Schluss "auffressen" :p
Wichtige Information, danke! :)

Liebe Grüße
Reality
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
W RegEx Matcher + Pattern und Emails Java Basics - Anfänger-Themen 8
S Regex Pattern Java Basics - Anfänger-Themen 3
S OOP Regex Pattern Java Basics - Anfänger-Themen 2
M RegEx Pattern Matcher Java Basics - Anfänger-Themen 16
M Regex-Pattern Java Basics - Anfänger-Themen 2
megachucky regex-Problem ( mit den Klassen Matcher / Pattern) --> XML prüfen Java Basics - Anfänger-Themen 11
U Java Pattern Regex Java Basics - Anfänger-Themen 9
K Probleme mit RegEx (Pattern und Matcher) Java Basics - Anfänger-Themen 2
K Regex Pattern Java Basics - Anfänger-Themen 4
F regex pattern problem Java Basics - Anfänger-Themen 4
S Regex Pattern Problem Java Basics - Anfänger-Themen 2
O reguläre Ausdrücke bei java.util.regex.Pattern Java Basics - Anfänger-Themen 4
G Java Regex / Pattern etc. <-> Jakarta RegExp Java Basics - Anfänger-Themen 6
L Backslash als Pattern bzw. RegEx Java Basics - Anfänger-Themen 1
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
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
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
P Grundsatzfrage zu Decorator-Pattern Java Basics - Anfänger-Themen 6
L Pattern Matching Java Basics - Anfänger-Themen 3
L RegExp bzw Pattern in Java Java Basics - Anfänger-Themen 6
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
N Regexp Pattern & Matcher Problem Java Basics - Anfänger-Themen 4
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
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
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
D regexp-pattern .. letzter schliff Java Basics - Anfänger-Themen 6
A ist das ein Singleton-Pattern? Java Basics - Anfänger-Themen 6
Z regexp/pattern für dateipfad Java Basics - Anfänger-Themen 5
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
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
M Singleton Pattern Java Basics - Anfänger-Themen 35
J Singleton Pattern Java Basics - Anfänger-Themen 5
J Ant pattern Erklaerung Java Basics - Anfänger-Themen 4
G Aufbau MVC-Pattern Java Basics - Anfänger-Themen 6
M Pattern Matching Java Basics - Anfänger-Themen 2
S Singleton Pattern passend hierfür? Java Basics - Anfänger-Themen 60
M Factory Pattern Ansatz falsch? Java Basics - Anfänger-Themen 6
Y Hilfe bei Pattern-Regexp Java Basics - Anfänger-Themen 5
U pattern Java Basics - Anfänger-Themen 2
A Pattern.matches(); Java Basics - Anfänger-Themen 14
A Problem mit Obser-Pattern Java Basics - Anfänger-Themen 2
P pattern/match Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben