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 !
@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:
@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...
Liegt eventuell daran, dass der Text Zeilenumbrüche enthält, die im RegEx nicht berücksichtigt werden.
Alternativ bietet Pattern einen Multiline Modus an: Pattern.compile(String, int)
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..
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
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"
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
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.
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"