import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "maxiobe request response game";
final String string = "index.php:\n\n"
+ "<?php\n"
+ "// index.php – Aufgabe 3 (Bootstrap, Bereichsauswahl, Validierung, Versuchszähler)\n"
+ "declare(strict_types=1);\n"
+ "session_start();\n\n"
+ "/* ------------------ Helper ------------------ */\n"
+ "function h(string $s): string { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); }\n"
+ "function resetGame(): void {\n"
+ " unset($_SESSION['randomNumber'], $_SESSION['tries'], $_SESSION['min'], $_SESSION['max'], $_SESSION['guesses']);\n"
+ "}\n\n"
+ "/* ------------------ Init ------------------ */\n"
+ "$alerts = []; // sammelt Bootstrap-Alerts [ ['type'=>'warning|danger|success|info','text'=>'...'] ]\n"
+ "if (!isset($_SESSION['tries'])) { $_SESSION['tries'] = 0; }\n"
+ "if (!isset($_SESSION['guesses'])) { $_SESSION['guesses'] = []; }\n\n"
+ "/* ------------------ Actions ------------------ */\n"
+ "if ($_SERVER['REQUEST_METHOD'] === 'POST') {\n\n"
+ " // Exit / Neues Spiel\n"
+ " if (isset($_POST['exit'])) {\n"
+ " resetGame();\n"
+ " header('Location: ' . $_SERVER['SCRIPT_NAME']);\n"
+ " exit();\n"
+ " }\n\n"
+ " // Start-Spiel mit Bereich (min/max)\n"
+ " if (isset($_POST['startgame'])) {\n"
+ " $min = $_POST['min'] ?? '1';\n"
+ " $max = $_POST['max'] ?? '10';\n\n"
+ " // Grundvalidierung: ganzzahlig\n"
+ " $validInts = ctype_digit(strval($min)) && ctype_digit(strval($max));\n"
+ " if (!$validInts) {\n"
+ " $alerts[] = ['type'=>'danger','text'=>'Bitte nur ganze Zahlen für <b>Min</b> und <b>Max</b> verwenden.'];\n"
+ " } else {\n"
+ " $min = (int)$min;\n"
+ " $max = (int)$max;\n\n"
+ " // Logische Prüfungen\n"
+ " if ($min < 0) { $alerts[] = ['type'=>'warning','text'=>'Der Minimalwert darf nicht negativ sein.']; }\n"
+ " if ($max <= $min) { $alerts[] = ['type'=>'warning','text'=>'<b>Max</b> muss größer als <b>Min</b> sein.']; }\n"
+ " if ($max - $min > 10000) { $alerts[] = ['type'=>'warning','text'=>'Der Bereich ist zu groß. Wähle einen kleineren Abstand (max. 10.000).']; }\n\n"
+ " if (!$alerts) {\n"
+ " $_SESSION['min'] = $min;\n"
+ " $_SESSION['max'] = $max;\n"
+ " $_SESSION['randomNumber'] = rand($min, $max);\n"
+ " $_SESSION['tries'] = 0;\n"
+ " $_SESSION['guesses'] = [];\n"
+ " $alerts[] = ['type'=>'primary','text'=>\"Spiel gestartet! Rate die Zahl zwischen <b>{$min}</b> und <b>{$max}</b>.\"];\n"
+ " }\n"
+ " }\n"
+ " }\n\n"
+ " // Rateversuch\n"
+ " if (isset($_POST['try']) && isset($_SESSION['randomNumber'])) {\n"
+ " $raw = $_POST['enteredNumber'] ?? '';\n\n"
+ " // Prüfung: Zahl eingegeben?\n"
+ " if ($raw === '' || !preg_match('/^-?\\d+$/', trim((string)$raw))) {\n"
+ " $alerts[] = ['type'=>'warning','text'=>'Bitte eine <b>ganze Zahl</b> eingeben.'];\n"
+ " } else {\n"
+ " $guess = (int)$raw;\n"
+ " $min = $_SESSION['min'] ?? 1;\n"
+ " $max = $_SESSION['max'] ?? 10;\n\n"
+ " // Bereichsprüfung\n"
+ " if ($guess < $min || $guess > $max) {\n"
+ " $alerts[] = ['type'=>'warning','text'=>\"Dein Tipp liegt <b>außerhalb</b> des Bereichs <b>{$min}–{$max}</b>.\"];\n"
+ " } else {\n"
+ " $secret = (int)$_SESSION['randomNumber'];\n"
+ " $_SESSION['tries']++;\n"
+ " $_SESSION['guesses'][] = $guess;\n\n"
+ " if ($guess === $secret) {\n"
+ " $t = (int)$_SESSION['tries'];\n"
+ " $alerts[] = ['type'=>'success','text'=>\"Zahl erraten 🎉 – du brauchtest <b>{$t}</b> Versuch\" . ($t === 1 ? '' : 'e') . \".\"];\n"
+ " // Nach Erfolg: Neues Spiel möglich (Reset-Button rendern), Zahl bleibt aber bis Exit,\n"
+ " // damit man die Success-Meldung sieht und \"Neues Spiel\" klicken kann.\n"
+ " // Alternativ direkt resetGame(); echo Link – aber wir bleiben konsistent mit Aufgabe 2.\n"
+ " } else {\n"
+ " $hint = ($guess > $secret) ? 'zu hoch' : 'zu niedrig';\n"
+ " $alerts[] = ['type'=>'danger','text'=>\"Leider falsch – dein Tipp ist <b>{$hint}</b>.\"];\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ "}\n\n"
+ "/* ------------------ View (HTML) ------------------ */\n"
+ "?>\n"
+ "<!doctype html>\n"
+ "<html lang=\"de\">\n"
+ "<head>\n"
+ " <meta charset=\"utf-8\"/>\n"
+ " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n"
+ " <title>Ratespiel – Aufgabe 3</title>\n"
+ " <link rel=\"stylesheet\" href=\"assets/bootstrap/css/bootstrap.min.css\">\n"
+ "</head>\n"
+ "<body>\n"
+ "<div class=\"container py-4\">\n"
+ " <h1 class=\"mb-4\">Ratespiel – Aufgabe 3</h1>\n\n"
+ " <?php foreach ($alerts as $a): ?>\n"
+ " <div class=\"alert alert-<?php echo h($a['type']); ?>\" role=\"alert\">\n"
+ " <?php echo $a['text']; ?>\n"
+ " </div>\n"
+ " <?php endforeach; ?>\n\n"
+ " <?php if (isset($_SESSION['randomNumber'])): ?>\n"
+ " <!-- Laufendes Spiel -->\n"
+ " <div class=\"card mb-3\">\n"
+ " <div class=\"card-body\">\n"
+ " <h5 class=\"card-title\">Dein Tipp</h5>\n"
+ " <form class=\"row g-3\" action=\"<?php echo h($_SERVER['SCRIPT_NAME']); ?>\" method=\"post\" name=\"form\">\n"
+ " <div class=\"col-sm-6 col-md-4\">\n"
+ " <input class=\"form-control\" type=\"number\" name=\"enteredNumber\"\n"
+ " placeholder=\"Zahl <?php echo (int)($_SESSION['min'] ?? 1); ?>–<?php echo (int)($_SESSION['max'] ?? 10); ?>\"\n"
+ " min=\"<?php echo (int)($_SESSION['min'] ?? 1); ?>\"\n"
+ " max=\"<?php echo (int)($_SESSION['max'] ?? 10); ?>\">\n"
+ " </div>\n"
+ " <div class=\"col-auto\">\n"
+ " <button class=\"btn btn-success\" type=\"submit\" name=\"try\" value=\"1\">Raten</button>\n"
+ " </div>\n"
+ " <div class=\"col-auto\">\n"
+ " <button class=\"btn btn-outline-secondary\" type=\"submit\" name=\"exit\" value=\"1\">Neues Spiel</button>\n"
+ " </div>\n"
+ " </form>\n"
+ " <p class=\"mt-3 mb-0\">\n"
+ " Bereich: <span class=\"badge bg-secondary\">\n"
+ " <?php echo (int)($_SESSION['min'] ?? 1); ?>–<?php echo (int)($_SESSION['max'] ?? 10); ?>\n"
+ " </span>\n"
+ " | \n"
+ " Versuche: <span class=\"badge bg-info text-dark\"><?php echo (int)$_SESSION['tries']; ?></span>\n"
+ " </p>\n"
+ " <?php if (!empty($_SESSION['guesses'])): ?>\n"
+ " <p class=\"mt-2 mb-0\">\n"
+ " Bisherige Tipps:\n"
+ " <?php foreach ($_SESSION['guesses'] as $g): ?>\n"
+ " <span class=\"badge bg-light text-dark\"><?php echo (int)$g; ?></span>\n"
+ " <?php endforeach; ?>\n"
+ " </p>\n"
+ " <?php endif; ?>\n"
+ " </div>\n"
+ " </div>\n\n"
+ " <?php if (!empty($alerts) && end($alerts)['type'] === 'success'): ?>\n"
+ " <!-- Bei Erfolg optional Hinweis-Card -->\n"
+ " <div class=\"alert alert-success\" role=\"alert\">\n"
+ " Glückwunsch! Du kannst oben auf <b>Neues Spiel</b> klicken, um erneut zu starten.\n"
+ " </div>\n"
+ " <?php endif; ?>\n\n"
+ " <?php else: ?>\n"
+ " <!-- Startseite mit Bereichsauswahl -->\n"
+ " <div class=\"card\">\n"
+ " <div class=\"card-body\">\n"
+ " <h5 class=\"card-title\">Spiel starten</h5>\n"
+ " <form class=\"row g-3\" action=\"<?php echo h($_SERVER['SCRIPT_NAME']); ?>\" method=\"post\" name=\"form\">\n"
+ " <div class=\"col-sm-4 col-md-3\">\n"
+ " <label class=\"form-label\" for=\"min\">Min</label>\n"
+ " <input class=\"form-control\" type=\"number\" id=\"min\" name=\"min\" value=\"1\" min=\"0\" step=\"1\" required>\n"
+ " </div>\n"
+ " <div class=\"col-sm-4 col-md-3\">\n"
+ " <label class=\"form-label\" for=\"max\">Max</label>\n"
+ " <input class=\"form-control\" type=\"number\" id=\"max\" name=\"max\" value=\"10\" min=\"1\" step=\"1\" required>\n"
+ " </div>\n"
+ " <div class=\"col-12\">\n"
+ " <button class=\"btn btn-primary\" type=\"submit\" name=\"startgame\" value=\"1\">Spielstart</button>\n"
+ " </div>\n"
+ " </form>\n"
+ " <p class=\"text-muted mt-2 mb-0\">Tipp: Wähle z. B. 1–100 für mehr Herausforderung.</p>\n"
+ " </div>\n"
+ " </div>\n"
+ " <?php endif; ?>\n\n"
+ "</div>\n"
+ "<script src=\"assets/bootstrap/js/bootstrap.bundle.min.js\"></script>\n"
+ "</body>\n"
+ "</html>\n\n"
+ "form try:\n\n"
+ "<?php\n"
+ "// form_try.part.php\n"
+ "?>\n"
+ "<form action=\"<?php echo htmlspecialchars($_SERVER['SCRIPT_NAME']); ?>\" method=\"post\" name=\"form\">\n"
+ " <input type=\"text\" name=\"enteredNumber\" placeholder=\"Zahl zwischen 1 und 10\" />\n"
+ " <input type=\"submit\" value=\"Raten\" name=\"try\" />\n"
+ " <input type=\"submit\" value=\"Exit\" name=\"exit\" />\n"
+ "</form>\n\n\n"
+ "form start:\n\n"
+ "<?php\n"
+ "// form_start.part.php\n"
+ "?>\n"
+ "<form action=\"<?php echo htmlspecialchars($_SERVER['SCRIPT_NAME']); ?>\" method=\"post\" name=\"form\">\n"
+ " <input type=\"submit\" value=\"Spielstart\" name=\"startgame\" />\n"
+ "</form>\n\n\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (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