{"id":239,"date":"2024-02-22T22:54:31","date_gmt":"2024-02-22T21:54:31","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=239"},"modified":"2024-02-28T22:57:08","modified_gmt":"2024-02-28T21:57:08","slug":"regulaere-ausdruecke-in-java","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=239","title":{"rendered":"Regul\u00e4re Ausdr\u00fccke in Java"},"content":{"rendered":"\n<p>Regul\u00e4re Ausdr\u00fccke, auch als Regex oder RegExp bekannt, sind leistungsstarke Werkzeuge f\u00fcr das Musterabgleichen und die Textmanipulation. In Java werden regul\u00e4re Ausdr\u00fccke durch das Paket <code>java.util.regex<\/code> implementiert, das eine umfangreiche Sammlung von Klassen und Methoden f\u00fcr die Arbeit mit Mustern bereitstellt. Dieser Artikel soll einen umfassenden Leitfaden f\u00fcr regul\u00e4re Ausdr\u00fccke in Java bieten, der die Grundlagen, fortgeschrittenen Einsatz und bew\u00e4hrte Praktiken abdeckt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verst\u00e4ndnis von Regul\u00e4ren Ausdr\u00fccken<\/h2>\n\n\n\n<p>Im Kern ist ein regul\u00e4rer Ausdruck eine Zeichenfolge, die ein Suchmuster definiert. Diese Muster k\u00f6nnen verwendet werden, um Zeichenfolgen abzugleichen, Eingaben zu validieren oder komplexe Textmanipulationen durchzuf\u00fchren. In Java wird die <code>Pattern<\/code>-Klasse verwendet, um einen kompilierten regul\u00e4ren Ausdruck zu repr\u00e4sentieren, und die <code>Matcher<\/code>-Klasse hilft dabei, das Muster auf eine gegebene Eingabe anzuwenden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Grundlegende Muster und Zeichen<\/h3>\n\n\n\n<p>Beginnen wir mit den grundlegenden Bausteinen regul\u00e4rer Ausdr\u00fccke.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Literale:<\/strong> Zeichen, die sich selbst entsprechen. Zum Beispiel wird der regul\u00e4re Ausdruck <code>abc<\/code> die Zeichenfolge &#8222;abc&#8220; genau abgleichen.<\/li>\n\n\n\n<li><strong>Zeichenklassen:<\/strong> Definieren eine Menge von Zeichen, die abgeglichen werden sollen. Beispielsweise wird <code>[aeiou]<\/code> zu jedem Vokal passen, und <code>[^0-9]<\/code> zu jedem Nicht-Ziffern-Zeichen.<\/li>\n\n\n\n<li><strong>Quantifizierer:<\/strong> Definieren die Anzahl der Vorkommen eines Zeichens oder einer Gruppe. H\u00e4ufig verwendete Quantifizierer sind <code>*<\/code> (null oder mehr), <code>+<\/code> (eins oder mehr), <code>?<\/code> (null oder eins) und <code>{n, m}<\/code> (zwischen n und m Vorkommen).<\/li>\n\n\n\n<li><strong>Metazeichen:<\/strong> Besondere Zeichen mit vordefinierten Bedeutungen. Beispiele sind <code>.<\/code> (beliebiges Zeichen), <code>^<\/code> (Anfang einer Zeile), <code>$<\/code> (Ende einer Zeile) und <code>\\<\/code> (Escape-Zeichen).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Die Klasse <code>Pattern<\/code><\/h3>\n\n\n\n<p>In Java werden regul\u00e4re Ausdr\u00fccke in <code>Pattern<\/code>-Objekte kompiliert. Die Klasse <code>Pattern<\/code> bietet verschiedene statische Methoden zum Erstellen von Mustern, wie <code>compile()<\/code> und <code>matches()<\/code>.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> java.util.regex.Pattern;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">RegexBeispiel<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        <span class=\"hljs-comment\">\/\/ Erstellen eines Musters<\/span>\n        Pattern pattern = Pattern.compile(<span class=\"hljs-string\">\"&#91;0-9]+\"<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ Abgleichen einer Zeichenfolge<\/span>\n        boolean istTreffer = pattern.matcher(<span class=\"hljs-string\">\"12345\"<\/span>).matches();\n        System.out.println(istTreffer); <span class=\"hljs-comment\">\/\/ Ausgabe: true<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Die Klasse <code>Matcher<\/code><\/h3>\n\n\n\n<p>Nachdem ein Muster kompiliert wurde, wird die Klasse <code>Matcher<\/code> verwendet, um das Muster auf eine bestimmte Eingabezeichenfolge anzuwenden. Sie bietet Methoden wie <code>matches()<\/code>, <code>find()<\/code> und <code>group()<\/code>.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> java.util.regex.Matcher;\n<span class=\"hljs-keyword\">import<\/span> java.util.regex.Pattern;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MatcherBeispiel<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        <span class=\"hljs-comment\">\/\/ Erstellen eines Musters<\/span>\n        Pattern pattern = Pattern.compile(<span class=\"hljs-string\">\"\\\\b\\\\d+\\\\b\"<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ Erstellen eines Matchers<\/span>\n        Matcher matcher = pattern.matcher(<span class=\"hljs-string\">\"123 456 789\"<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ Suchen von Treffern<\/span>\n        <span class=\"hljs-keyword\">while<\/span> (matcher.find()) {\n            System.out.println(<span class=\"hljs-string\">\"Treffer: \"<\/span> + matcher.group());\n        }\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel passt das Muster <code>\\b\\d+\\b<\/code> auf eine oder mehrere Ziffern zwischen Wortgrenzen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fortgeschrittene Verwendung<\/h2>\n\n\n\n<p>Regul\u00e4re Ausdr\u00fccke werden m\u00e4chtiger, wenn grundlegende Elemente zu komplexen Mustern kombiniert werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gruppen und Erfassen<\/h3>\n\n\n\n<p>Gruppen sind Teile eines regul\u00e4ren Ausdrucks, die in Klammern eingeschlossen sind. Sie erm\u00f6glichen es, Quantifizierer auf mehrere Zeichen anzuwenden.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> java.util.regex.Matcher;\n<span class=\"hljs-keyword\">import<\/span> java.util.regex.Pattern;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">GruppenBeispiel<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        <span class=\"hljs-comment\">\/\/ Erstellen eines Musters mit Gruppen<\/span>\n        Pattern pattern = Pattern.compile(<span class=\"hljs-string\">\"(&#91;a-z]+)(\\\\d+)\"<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ Erstellen eines Matchers<\/span>\n        Matcher matcher = pattern.matcher(<span class=\"hljs-string\">\"abc123\"<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ Extrahieren von erfassten Gruppen<\/span>\n        <span class=\"hljs-keyword\">if<\/span> (matcher.matches()) {\n            <span class=\"hljs-built_in\">String<\/span> buchstaben = matcher.group(<span class=\"hljs-number\">1<\/span>);\n            <span class=\"hljs-built_in\">String<\/span> ziffern = matcher.group(<span class=\"hljs-number\">2<\/span>);\n            System.out.println(<span class=\"hljs-string\">\"Buchstaben: \"<\/span> + buchstaben + <span class=\"hljs-string\">\", Ziffern: \"<\/span> + ziffern);\n        }\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel erfasst das Muster <code>([a-z]+)(\\\\d+)<\/code> eine oder mehrere Buchstaben gefolgt von einer oder mehreren Ziffern.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Positive und Negative Lookahead\/Lookbehind<\/h3>\n\n\n\n<p>Lookahead- und Lookbehind-Assertionen erm\u00f6glichen es, Bedingungen zu definieren, die f\u00fcr einen Treffer erf\u00fcllt sein m\u00fcssen, ohne den abgeglichenen Text im Ergebnis zu erfassen.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> java.util.regex.Matcher;\n<span class=\"hljs-keyword\">import<\/span> java.util.regex.Pattern;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">LookaroundBeispiel<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        <span class=\"hljs-comment\">\/\/ Positive Lookahead-Assertion<\/span>\n        Pattern pattern = Pattern.compile(<span class=\"hljs-string\">\"\\\\d(?=\\\\D)\"<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ Erstellen eines Matchers<\/span>\n        Matcher matcher = pattern.matcher(<span class=\"hljs-string\">\"1a 2b 3c\"<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ Suchen von Treffern<\/span>\n        <span class=\"hljs-keyword\">while<\/span> (matcher.find()) {\n            System.out.println(<span class=\"hljs-string\">\"Treffer: \"<\/span> + matcher.group());\n        }\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel passt das Muster <code>\\d(?=\\D)<\/code> auf eine Ziffer nur, wenn sie von einem Nicht-Ziffer-Zeichen gefolgt wird.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gierige vs. Faule Quantifizierer<\/h3>\n\n\n\n<p>Quantifizierer in regul\u00e4ren Ausdr\u00fccken sind standardm\u00e4\u00dfig gierig, d. h., sie passen so viel wie m\u00f6glich an. Wenn ein <code>?<\/code> nach einem Quantifizierer steht, wird dieser faul und passt so wenig wie m\u00f6glich an.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> java.util.regex.Matcher;\n<span class=\"hljs-keyword\">import<\/span> java.util.regex.Pattern;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">GierigFauleBeispiel<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        <span class=\"hljs-comment\">\/\/ Gieriger Quantifizierer<\/span>\n        Pattern gierigesMuster = Pattern.compile(<span class=\"hljs-string\">\"&lt;.*&gt;\"<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ Fauler Quantifizierer<\/span>\n        Pattern faulesMuster = Pattern.compile(<span class=\"hljs-string\">\"&lt;.*?&gt;\"<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ Erstellen von Matchern<\/span>\n        Matcher gierigerMatcher = gierigesMuster.matcher(<span class=\"hljs-string\">\"&lt;tag&gt;inhalt&lt;\/tag&gt;\"<\/span>);\n        Matcher faulerMatcher = faulesMuster.matcher(<span class=\"hljs-string\">\"&lt;tag&gt;inhalt&lt;\/tag&gt;\"<\/span>);\n\n        <span class=\"hljs-comment\">\/\/ Suchen von Treffern<\/span>\n        <span class=\"hljs-keyword\">while<\/span> (gierigerMatcher.find()) {\n            System.out.println(<span class=\"hljs-string\">\"Gieriger Treffer: \"<\/span> + gierigerMatcher.group());\n        }\n\n        <span class=\"hljs-keyword\">while<\/span> (faulerMatcher.find()) {\n            System.out.println(<span class=\"hljs-string\">\"Faule Treffer: \"<\/span> + faulerMatcher.group());\n        }\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel passt das gierige Muster <code>&lt;.*&gt;<\/code> auf die gesamte Zeichenkette zwischen dem ersten <code>&lt;<\/code> und dem letzten <code>&gt;<\/code>, w\u00e4hrend das faule Muster <code>&lt;.*?&gt;<\/code> nur das zwischen jedem Paar von Tags passt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bew\u00e4hrte Praktiken und Tipps<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Bevorzugen Sie kompilierte Muster:<\/strong><br>Kompilieren Sie regul\u00e4re Ausdr\u00fccke immer, bevor Sie sie wiederholt verwenden. Die Kompilierung ist eine aufw\u00e4ndige Operation, und die Verwendung von kompilierten Mustern verbessert die Leistung.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">\n<span class=\"hljs-comment\">\/\/ Bevorzugen Sie dies<\/span>\nPattern muster1 = Pattern.compile(<span class=\"hljs-string\">\"\\\\d+\"<\/span>);\nPattern muster2 = Pattern.compile(<span class=\"hljs-string\">\"\\\\w+\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li><strong>Verwenden Sie Zeichenklassen mit Bedacht:<\/strong><br>Zeichenklassen wie <code>[a-z]<\/code> sind standardm\u00e4\u00dfig auf Gro\u00df-\/Kleinschreibung empfindlich. Wenn ein Fall-unsensitives Abgleichen gew\u00fcnscht ist, verwenden Sie die <code>(?i)<\/code>-Flagge.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-comment\">\/\/ Gro\u00df-\/Kleinschreibung beachten<\/span>\nPattern muster = Pattern.compile(<span class=\"hljs-string\">\"&#91;a-z]\"<\/span>);\n\n<span class=\"hljs-comment\">\/\/ Gro\u00df-\/Kleinschreibung ignorieren<\/span>\nPattern muster = Pattern.compile(<span class=\"hljs-string\">\"(?i)&#91;a-z]\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><strong>Escape von Metazeichen:<\/strong><br>Achten Sie auf Metazeichen und escapen Sie sie, wenn sie als Literale behandelt werden sollen.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-comment\">\/\/ Abgleichen eines literalen Punktes<\/span>\nPattern muster = Pattern.compile(<span class=\"hljs-string\">\"\\\\.\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li><strong>Validieren Sie Eingaben mit <code>matches()<\/code>:<\/strong><br>Die Methode <code>matches()<\/code> \u00fcberpr\u00fcft, ob die gesamte Eingabezeichenfolge dem Muster entspricht. Verwenden Sie sie zur Eingabevalidierung.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-comment\">\/\/ \u00dcberpr\u00fcfen, ob eine Zeichenfolge eine Zahl ist<\/span>\n<span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-string\">\"123\"<\/span>.matches(<span class=\"hljs-string\">\"\\\\d+\"<\/span>)) {\n    System.out.println(<span class=\"hljs-string\">\"G\u00fcltige Zahl\"<\/span>);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>","protected":false},"excerpt":{"rendered":"<p>Regul\u00e4re Ausdr\u00fccke, auch als Regex oder RegExp bekannt, sind leistungsstarke Werkzeuge f\u00fcr das Musterabgleichen und die Textmanipulation. In Java werden regul\u00e4re Ausdr\u00fccke durch das Paket java.util.regex implementiert, das eine umfangreiche Sammlung von Klassen und Methoden f\u00fcr die Arbeit mit Mustern bereitstellt. Dieser Artikel soll einen umfassenden Leitfaden f\u00fcr regul\u00e4re Ausdr\u00fccke in Java bieten, der die [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-239","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/239","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=239"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/239\/revisions"}],"predecessor-version":[{"id":240,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/239\/revisions\/240"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=239"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=239"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=239"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}