import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "<h3>(.*?)<\\/h3>";
final String string = "{{1}}\n"
+ "<h2>Allgemeines</h2>\n"
+ "<h3>Was sind die Kommunikationskanäle für die Übungen?</h3>\n"
+ "<p>Allgemeine Fragen gehören in die Newsgroup, da wir sie da für alle Übungsteilnehmer gleichermaßen\n"
+ "beantworten können. </p>\n"
+ "<p>Fragen zur eigenen Implementierung dürfen hingegen nicht öffentlich gestellt werden. Nutzt dafür unser\n"
+ "Ticketsystem.</p>\n"
+ "<p>Organisatorische Fragen (z.B. Information bei Krankheit, Anfragen nach Terminverlegungen,\n"
+ "Kommunikationsprobleme auf einem unserer anderen Kanäle etc.) schickt bitte per E-Mail an den\n"
+ "entsprechenden Übungsverteiler (<html><body><code class=\"highlight\">unix@..</code></body></html> oder <html><body><code class=\"highlight\">foop@..</code></body></html>). </p>\n"
+ "<h3>Warum soll ich die Übungs-E-Mailverteiler nutzen und euch nicht direkt anschreiben?</h3>\n"
+ "<p>Zum einen, damit immer alle Übungsverantwortlichen gleichermaßen informiert sind und reagieren können\n\n"
+ "*asdas*(auch bei uns kann ja mal jemand ausfallen), zum anderen teilen wir uns die Aufgaben natürlich auch ein\n"
+ "und Anfragen könnten, wenn sie nur an eine Person direkt gestellt werden, unnötig lange liegen bleiben.</p>\n"
+ "<h3>Ich habe eine ganz dringende Frage - wie kann ich euch erreichen?</h3>\n"
+ "<p>Bitte nutzt immer die vorgeschriebenen Kommunikationskanäle - eine schnellere Kontaktmöglichkeit gibt es\n"
+ "nicht. Schreibt uns in keinem Fall privat bei Teams an, da wir diese Kanäle ausschließlich zur\n"
+ "internen Kommunikation zwischen den Übungsleitern und Übungs(mit)betreuern nutzen. Private Chats und\n"
+ "Anrufe von Übungsteilnehmern werden wir ignorieren und euch entsprechend auf stumm schalten. Wiederholte\n"
+ "Kontaktversuche / Störungen werden wir als Störung des Übungsfriedens werten und entsprechend darauf reagieren.\n"
+ "Die einzige Ausnahme von dieser Regel ist, wenn wir euch persönlich dazu auffordern uns direkt\n"
+ "bei Teams anzuschreiben.</p>\n"
+ "<h3>Meine Anfrage wurde noch nicht bearbeitet, obwohl sie schon x Stunden her ist. Wie kann ich die Bearbeitung beschleunigen?</h3>\n"
+ "<p>Wir bearbeiten Anfragen immer so schnell wie es uns möglich ist. Da ihr keine Möglichkeit habt zu sehen wie\n"
+ "hoch unsere momentane Auslastung jeweils ist, seht bitte von Nachfragen ab. Nachfragen erhöhen lediglich\n"
+ "den Overhead für uns und kosten uns im Endeffekt Zeit, die wir sonst nutzen könnten um auf “echte” Anfragen\n"
+ "zu reagieren. Ansonsten gilt zu diesem Punkt alles was unter “Ich habe eine ganz dringende Frage - wie kann\n"
+ "ich euch erreichen?” steht.</p>\n"
+ "<h3>Ich habe ein Problem oder eine Frage, welche zu komplex ist um sie textuell als Ticket zu beschreiben. Wo bekomme ich einen Besprechungstermin?</h3>\n"
+ "<p>Macht einfach ein entsprechendes Ticket auf und versucht uns bitte trotzdem so eine grobe Richtung\n"
+ "zu geben wie umfangreich eure Frage ist oder auf was sie abzielt, dass wir entsprechend Zeit für\n"
+ "eine Besprechung einplanen können. Bitte vermerkt unbedingt eure Verfügbarkeiten im Ticket, so dass\n"
+ "wir nicht extra nachfragen müssen. Wir gehen davon aus, dass ihr zu den Besprechungsterminen laut\n"
+ "Kalender immer verfügbar seid. (Siehe auch “Wann finden die Betreuungstermine per Videokonferenz statt?”)</p>\n"
+ "<h3>Wann kann ich mit einer Antwort auf meine Anfrage / Ticket rechnen?</h3>\n"
+ "<p>Unsere Arbeitszeiten sind üblicherweise 8 Stunden pro Tag an den Werktagen (Montag bis Freitag)\n"
+ "innerhalb der üblichen Vorlesungszeiten - also zwischen frühestens 8 Uhr und spätestens 18:30.\n"
+ "Außerhalb dieser Zeiten ist eine Antwort zwar nicht per se ausgeschlossen, aber eher unwahrscheinlich.\n"
+ "Bitte beachtet, dass insbesondere am Tag vor dem Servertest ggfs. nicht mehr alle eingehenden Anfragen\n"
+ "rechtzeitig bearbeitet werden können und organisiert euch entsprechend - die Zeiträume für die Bearbeitung\n"
+ "der Aufgaben sind auch aus diesem Grund eher großzügig gewählt.</p>\n"
+ "<p>Generell sind wir selbstverständlich bestrebt alle Anfragen zeitnah zu beantworten, bedenkt aber,\n"
+ "dass wir außer Support auch noch eine Menge anderer Tätigkeiten nachgehen (wie z.B. Übungsabnahmen,\n"
+ "Aufgabenerstellung, Organisation, Gremientätigkeiten an der Hochschule und die Durchführung von\n"
+ "anderen Veranstaltungen (Unix-Vorlesung)) und momentan (Stand Sommersemester 2020) außer eurer Gruppe noch\n"
+ "knapp 120 weitere Übungsgruppen aus den Übungen Unix und FOOP betreuen. </p>\n"
+ "<h3>Wann finden die Betreuungstermine per Videokonferenz statt?</h3>\n"
+ "<p>Die Betreuung per Videokonferenz findet nach persönlicher Absprache mit uns (über das Ticketsystem)\n"
+ "statt. Die Termine, zu denen wir eine Verfügbarkeit für die Betreuung per Videokonferenz garantieren,\n"
+ "sind die im jeweiligen Übungskalender als “Betreuung” gekennzeichneten Zeitslots. Je nach unserer\n"
+ "Verfügbarkeit und der zeitlichen Entfernung zum nächsten Betreuungstermin werden wir versuchen, ggfs. auch\n"
+ "frühere Termine anzubieten. Es ist dafür sehr nützlich, wenn ihr direkt eure Verfügbarkeiten für eine\n"
+ "Besprechung im Ticket mit angebt um weitere Rückfragen zu vermeiden. Wir gehen davon aus, dass ihr zu\n"
+ "den Besprechungsterminen laut Kalender immer verfügbar seid.</p>\n"
+ "<h3>Wie kommuniziert ihr mit uns?</h3>\n"
+ "<p>Alle öffentlichen Ankündigungen (Veröffentlichung Aufgabenstellungen, Freischaltung Servertest, eventuelle\n"
+ "Korrekturen oder Ergänzungen an Aufgabenstellungen, Serverwartungen, Terminverschiebungen, etc.) erfolgen\n"
+ "stets in der entsprechenden Newsgroup.</p>\n"
+ "<p>Anfragen von euch werden von uns immer auf dem Kanal beantwortet, auf dem sie auch eingegangen sind.\n"
+ "Beachtet, dass das Ticketsystem mit eurer FH-E-Mailadresse verknüpft ist.</p>\n"
+ "<h2>Aufgabenstellungen</h2>\n"
+ "<h3>Wo finde ich die Aufgabenstellungen?</h3>\n"
+ "<p>Aufgabenstellungen werden stets auf den Unterseiten der entsprechenden Übung auf dieser Webseite veröffentlicht.</p>\n"
+ "<h3>Wann werden die Aufgabenstellungen veröffentlicht?</h3>\n"
+ "<p>Die Aufgabenstellungen werden an dem Tag veröffentlicht der dafür im Kalender steht. Die Uhrzeit stammt noch\n"
+ "aus den Zeiten zu denen es da eine Aufgabenvorstellung im Hörsaal geben konnte und ist daher nicht mehr weiter\n"
+ "von Bedeutung. Wir nutzen den Freiraum, der durch den Wegfall der Aufgabenvorstellung im Hörsaal entstanden ist,\n"
+ "im Zweifelsfall dafür, die Aufgabe noch mit Ergänzungen zu versehen, die den Wegfall der Aufgabenvorstellung\n"
+ "zumindest ein bisschen kompensieren können.</p>\n"
+ "<p>Sobald die Aufgabe veröffentlicht wurde, wird dies in der entsprechenden Newsgroup angekündigt.</p>\n"
+ "<h3>Ich verstehe etwas an der Aufgabenstellung / dem vorgegebenen Code (falls vorhanden) / den vorgegebenen Kommentaren (falls vorhanden) nicht.</h3>\n"
+ "<p>Bitte formuliert eure Frage in der Newsgroup - dort kann sie am schnellsten und effizientesten\n"
+ "beantwortet werden.</p>\n"
+ "<h3>Ich habe eine Frage zu meiner persönlichen Lösung der Aufgabe.</h3>\n"
+ "<p>Bitte schreibt ein entsprechendes Ticket in unserem Ticketsystem. Wir werden dann entscheiden, ob\n"
+ "eine schriftliche Diskussion zielführend ist, und, falls nicht, einen Besprechungstermin für eine\n"
+ "Videokonferenz mit euch vereinbaren.</p>\n"
+ "<h2>Ticketsystem / Tickets</h2>\n"
+ "<h3>Wie melde ich mich am Ticketsystem an?</h3>\n"
+ "<p>Zum Start der Übung habt ihr alle einen Link an eure FH-E-Mailadresse erhalten, mit dem ihr euch\n"
+ "am Ticketsystem registrieren könnt. Der Benutzername ist eure FH-E-Mailadresse (ohne stud und\n"
+ "ohne rz im Namen, also z.B. <html><body><code class=\"highlight\">inf123456@fh-wedel.de</code></body></html>) das Passwort ist frei wählbar.</p>\n"
+ "<h3>Die Registrierung klappt nicht.</h3>\n"
+ "<p>Habt ihr beide Zeilen des Links aus der E-Mail kopiert? Falls es damit nicht funktioniert, sagt gern\n"
+ "per E-Mail an den entsprechenden Übungsverteiler (<html><body><code class=\"highlight\">unix@..</code></body></html> oder <html><body><code class=\"highlight\">foop@..</code></body></html>) Bescheid - wir lösen den\n"
+ "Vorgang dann für euch nochmals manuell aus.</p>\n"
+ "<h3>Ich habe meine Passwort vergessen.</h3>\n"
+ "<p>Ihr könnt auf der Oberfläche des Ticketsystems bei einem fehlgeschlagenen Login-Versuch eine\n"
+ "E-Mail zum Neu-Setzen des Passworts anfordern. Sollte das nicht funktionieren, schickt uns bitte\n"
+ "eine E-Mail an den entsprechenden Übungsverteiler (<html><body><code class=\"highlight\">unix@..</code></body></html> oder <html><body><code class=\"highlight\">foop@..</code></body></html>) - wir lösen den\n"
+ "Vorgang dann für euch manuell aus.</p>\n"
+ "<h3>Wie lege ich ein Ticket an?</h3>\n"
+ "<p>Ganz einfach: Meldet euch mit eurem Benutzernamen und dem von euch gesetzten Passwort\n"
+ "(siehe “Wie melde ich mich am Ticketsystem an?”) an und erstellt ein Ticket.</p>\n"
+ "<h3>Meine Frage wurde zwar beantwortet, aber leider nicht ausreichend oder ich verstehe etwas an der Antwort nicht.</h3>\n"
+ "<p>Ihr könnt eure Tickets auch wieder öffnen indem ihr einfach darauf antwortet. Bitte nutzt unbedingt\n"
+ "diese Möglichkeit, damit wir den Verlauf der Frage nachvollziehen können und euch nicht mehrmals\n"
+ "die selben Sachen schreiben.</p>\n"
+ "<h3>Meine Frage hat sich zwischenzeitlich erledigt.</h3>\n"
+ "<p>Bitte schreibt einfach “Hat sich erledigt” oder ähnliches als Antwort auf euer eigenes Ticket. Wir\n"
+ "werden das dann entsprechend einfach löschen oder als erledigt markieren.</p>\n"
+ "<p>Bedenkt bitte, dass das Bearbeiten von Tickets einen nicht unwesentlichen Anteil unserer Zeit\n"
+ "in Anspruch nimmt und es für uns ausgesprochen unangenehm ist unsere Zeit mit Fragen zu\n"
+ "verschwenden, die sich bereits erledigt haben.</p>\n"
+ "<h3>Meine Frage hat sich seit dem Ticket öffnen verändert bzw. ich habe neue Erkenntnisse gewonnen.</h3>\n"
+ "<p>Bitte schreibt schnellstmöglich einen entsprechenden Änderungslog / eine entsprechende Erweiterung\n"
+ "als Antwort auf euer Ticket. Wir werden das dann bei der Bearbeitung berücksichtigen.</p>\n"
+ "<p>Bedenkt bitte, dass das Bearbeiten von Tickets einen nicht unwesentlichen Anteil unserer Zeit\n"
+ "in Anspruch nimmt und es für uns und euch wenig zielführend ist, wenn wir unsere Zeit in die Beantwortung\n"
+ "nicht mehr aktueller Fragen investieren. Ihr würdet ja bei der persönlichen Betreuung auch\n"
+ "nicht mit dem Erkenntnisstand “von vor zwei Stunden” fragen, wenn ihr inzwischen neue Erkenntnisse dazu\n"
+ "gewonnen habt.</p>\n"
+ "<h2>Organisatorisches</h2>\n"
+ "<h3>Wo finden die Abnahmen statt und was brauche ich dafür?</h3>\n"
+ "<p>Die Abnahmen finden in einem nur eurer Gruppe und den Abnehmern der jeweiligen Übung zugeordneten\n"
+ "privaten Kanal bei MS Teams statt. Ihr benötigt für die Abnahme das entsprechende Equipment für\n"
+ "eine Videokonferenz (Kamera, Lautsprecher & Mikrofon oder Headset) und einen funktionierenden Zugang\n"
+ "zu MS Teams.</p>\n"
+ "<h3>Wo finden die Besprechungen per Videokonferenz statt?</h3>\n"
+ "<p>Die Besprechungen - ebenso wie die Abnahmen - finden immer in dem eurer Gruppe zugeordneten privaten\n"
+ "Kanal bei MS Teams statt. Bitte startet zur vereinbarten Uhrzeit eine Besprechung, wir kommen dann dazu.\n"
+ "Bitte seid insbesondere während der Besprechungstermine etwas geduldig, da wir versuchen möglichst\n"
+ "viele Gruppen zu betreuen und vorher nicht immer abschätzen können, wie lange es dauert, kann es da\n"
+ "teilweise zu längeren Wartezeiten kommen.</p>\n"
+ "<h2>Servertest</h2>\n"
+ "<h3>Wie erfahre ich ab wann der Servertest verfügbar ist?</h3>\n"
+ "<p>Wir kündigen die Verfügbarkeit des Servertests immer in der Newsgroup an - und zwar in dem Moment, in\n"
+ "dem er verfügbar ist. Bitte seht von Nachfragen “wann endlich der Test erscheint” in der Newsgroup oder\n"
+ "auf anderen Kanälen ab - ihr könnt euch sicher sein, dass wir weder das Freischalten des Tests noch\n"
+ "die entsprechende Ankündigung vergessen haben oder vergessen werden.</p>\n"
+ "<h3>Mein Programm tut augenscheinlich genau das was es tun soll, aber der Servertest liefert beständig nur geringe Prozentzahlen. Woran kann das liegen?</h3>\n"
+ "<p>In Unix kann das häufig daran liegen, dass euer Programm die Ausgabespezifikation nicht exakt einhält. Prüft\n"
+ "zunächst, ob ihr euch vielleicht irgendwo bei einer Ausgabe vertippt habt oder ob ihr vielleicht Zeichen\n"
+ "mit ausgebt, die nicht erwartet werden (der Klassiker sind zusätzliche Leerzeichen am Ende einer Zeile oder\n"
+ "fehlende Leerzeichen bei der Formatierung der Ausgabe).</p>\n"
+ "<p>In FOOP ist es etwas schwieriger das so allgemein einzugrenzen. Im Zweifelsfall liegt es daran, dass euer\n"
+ "Programm sich bei einer vorgegebenen öffentlichen Schnittstelle anders verhält als erwartet. Sollten\n"
+ "wir testkritische Schnittstellen in der Aufgabenstellung definiert haben, prüft bitte zunächst diese auf\n"
+ "Herz und Nieren. Sollten wir Tests vorgegebenen haben, müssen diese in jedem Fall erstmal laufen, bevor\n"
+ "wir eine Aussage zu euren Prozentwerten treffen können - die Tests, die wir mitliefern, dienen ja zumeist\n"
+ "genau dem Zweck die Funktion testkritischer Schnittstellen sicherzustellen und sollen euch zudem den\n"
+ "Einstieg in das Testen der Aufgabe erleichtern.</p>\n"
+ "<p>Wenn ihr nach Berücksichtigung dieser Tipps nicht weiter kommt, fragt gern nach - siehe nächster Punkt.</p>\n"
+ "<h3>Ich habe weniger als 100% im Servertest und beim besten Willen keine Idee woran es liegen könnte. Wo bekomme ich Hilfe?</h3>\n"
+ "<p>Bitte macht ein entsprechendes Ticket im Ticketsystem auf - wir behandeln diese Anfragen wie jedes andere\n"
+ "Ticket und antworten entweder schriftlich (wenn möglich) oder vereinbaren einen Termin zur Besprechung\n"
+ "mit euch. Häufig sind diese Fragen in einem Gespräch einfacher zu klären als schriftlich, daher\n"
+ "bietet es sich an bei einem solchen Ticket eure Verfügbarkeiten präventiv immer mit anzugeben.</p>\n"
+ "<h3>Was genau bedeutet “Der Zugriff auf den Testserver ist nur von Montag bis Freitag zu euren regulären Arbeitszeiten (10–18 Uhr) garantiert”?</h3>\n"
+ "<p>Das bedeutet, dass wir nur in diesem Zeitfenster garantieren können, dass Ausfälle am Testserver auch\n"
+ "behoben werden können. Generell ist der Testserver von unserer Seite aus 24 / 7 online und\n"
+ "verfügbar, da wir euch in euren Arbeitszeiten nicht unnötig einschränken wollen. Da ein Neustart allerdings\n"
+ "immer einen manuellen Zugriff und eine entsprechende Fehlersuche erfordert, können wir eine\n"
+ "Wiederherstellung eines ausgefallenen Servers nur zu unseren regulären Arbeitszeiten gewährleisten.</p>\n"
+ "<p>Solltet ihr unerwarteterweise (siehe “Wie erfahre ich ab wann der Servertest verfügbar ist?”) nicht auf den\n"
+ "Testserver zugreifen können, sagt bitte kurz in der Newsgroup Bescheid. Notwendige Wartungen am Server\n"
+ "kündigen wir dort selbstverständlich immer an, ebenso, wenn wir einen ausgefallenen Server wiederhergestellt\n"
+ "haben.</p>\n"
+ "<h2>Abnahmen</h2>\n"
+ "<h3>Wie finde ich meinen Abnahmetermin?</h3>\n"
+ "<p>Ihr habt euch verbindlich für einen Termin im Online-Sekretariat angemeldet, dieser gilt dann für\n"
+ "eure Abnahmen (sofern ihr nicht mit uns per E-Mail einen anderen Termin vereinbart habt, dann gilt\n"
+ "natürlich dieser Termin). Aus diesem Termin ergibt sich Wochentag und Zeitslot für eure Abnahme,\n"
+ "das konkrete Datum der jeweiligen Abnahme ergibt sich aus unserem Kalender.</p>\n"
+ "<h3>Meine Abnahme startet nicht wie erwartet. Was mache ich jetzt?</h3>\n"
+ "<p>Prüft bitte, ob es sich auch um den richtigen Tag, die richtige Uhrzeit und das richtige Datum für\n"
+ "eure Abnahme handelt. In Unix finden die Abnahmen nach A-/B-Terminen wochenweise verschränkt statt,\n"
+ "prüft also bitte kurz, ob das auch wirklich die richtige Woche für euren Termin ist.</p>\n"
+ "<p>Wenn ihr in einem Termin als zweite Gruppe dran seid, solltet ihr von eurem Abnehmer eine entsprechende\n"
+ "Nachricht im Chat für eure Gruppe erhalten haben. Bitte geduldet euch dann noch - die Dauer einer\n"
+ "Abnahme ist im Vorwege kaum absehbar und wir sind natürlich bestrebt allen Gruppen individuell\n"
+ "gerecht zu werden.</p>\n"
+ "<p>Solltet ihr euch wirklich sicher sein, dass wir euch vergessen haben - und auch wirklich nur dann -\n"
+ "schreibt bitte in eurem privaten Kanal eine Nachricht mit dem Präfix <html><body><code class=\"highlight\">@channel</code></body></html> gefolgt von einem\n"
+ "Leerzeichen und einem entsprechenden Hinweis. (In jedem anderen Fall werten wir eine solche Notation\n"
+ "als Störung und werden entsprechend darauf reagieren.)</p>\n"
+ "<h3>Ich habe meine Abnahme verpasst.</h3>\n"
+ "<p>Da Abnahmen sowohl Termine mit Anwesenheitspflicht als auch Prüfungen sind, führt ein unentschuldigtes\n"
+ "Nicht-Erscheinen zur Abnahme automatisch zum Nicht-Bestehen der entsprechenden Aufgabe und damit für\n"
+ "FH-Teilnehmer im Zweifelsfall (also außer bei Unix Aufgabe 1) auch zum Nicht-Bestehen der gesamten Übung.</p>\n"
+ "<p>Solltet ihr euch lediglich verspätet haben, aber noch innerhalb des Abnahmetermins da sein,\n"
+ "meldet euch bitte über die <html><body><code class=\"highlight\">@channel</code></body></html> Notation in eurem Kanal, siehe vorheriger Punkt bei uns. </p>\n"
+ "<p>Für die genauen Regelungen, was die Anwesenheitspflicht angeht, konsultiert bitte unsere\n"
+ "Regularien.</p>\n"
+ "<h2>Sonstiges</h2>\n"
+ "<h3>Mein Gruppenpartner ist total unzuverlässig (nicht erreichbar, lässt mich alle Arbeit machen, etc.).</h3>\n"
+ "<p>Bitte schreib uns schnellstmöglich eine E-Mail an den entsprechenden Verteiler\n"
+ "(siehe Kommunikationskanäle) und schildere uns das Problem. Wir werden die Gruppe dann im Zweifelsfall\n"
+ "auftrennen.</p>\n"
+ "<h3>Ich habe vergessen meine Daten rechtzeitig einzuchecken oder zum Severtestzeitpunkt war eine nicht-funktionale Lösung im Repo.</h3>\n"
+ "<p>Da können wir leider nichts machen - euer Repo in einem ordentlichen Zustand zu halten und das zu\n"
+ "überprüfen, ist allein eure Verantwortung. Für alle Gruppen gilt stets ein und derselbe Testzeitpunkt\n"
+ "und davon können und würden wir, selbst wenn wir könnten, nicht abweichen. Das gilt auch, wenn ihr\n"
+ "zu einem früheren Zeitpunkt schon eine funktionale Lösung eingecheckt und selbst getestet hattet.</p>\n"
+ "<h3>Ich hab das FAQ komplett gelesen und jetzt traue ich mich nicht mehr euch was zu fragen.</h3>\n"
+ "<p>Die hier beschriebenen Regeln sind ja genau dafür gedacht, dass ihr Fragen stellen könnt und\n"
+ "wir euch zu diesen Fragen die bestmögliche Betreuung liefern können. Es gibt also gar keinen\n"
+ "Grund eine Frage nicht zu stellen. ;)</p>";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
if (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html