{"id":6061,"date":"2021-12-04T12:55:19","date_gmt":"2021-12-04T11:55:19","guid":{"rendered":"https:\/\/speefak.spdns.de\/oss_lifestyle\/?p=6061"},"modified":"2024-01-03T20:06:24","modified_gmt":"2024-01-03T19:06:24","slug":"posix-klammerausdruecke","status":"publish","type":"post","link":"https:\/\/speefak.spdns.de\/oss_lifestyle\/posix-klammerausdruecke\/","title":{"rendered":"Posix Klammerausdr\u00fccke"},"content":{"rendered":"<h2>POSIX-Klammerausdr\u00fccke<\/h2>\n<p>POSIX-Klammerausdr\u00fccke sind eine besondere Art von Zeichenklassen. POSIX-Klammerausdr\u00fccke entsprechen einem Zeichen aus einer Reihe von Zeichen, genau wie normale Zeichenklassen. Sie verwenden dieselbe Syntax mit eckigen Klammern. Ein Bindestrich erzeugt einen Bereich und ein Caret am Anfang negiert den Klammerausdruck. Ein wesentlicher syntaktischer Unterschied besteht darin, dass der Backslash KEIN Metazeichen in einem POSIX-Klammerausdruck ist. In POSIX entspricht der regul\u00e4re Ausdruck [\\d] also einem \\ oder einem d. Um ein ] zu finden, f\u00fcgen Sie es als erstes Zeichen nach dem \u00f6ffnenden [ oder dem negierenden ^ ein. Um ein &#8211; abzugleichen, setzen Sie es direkt vor das schlie\u00dfende ]. Um ein ^ zu finden, setzen Sie es vor das letzte Literal &#8211; oder das schlie\u00dfende ]. Zusammengenommen entspricht []\\d^-] ], \\, d, ^ oder -. Der Hauptzweck von Klammerausdr\u00fccken besteht darin, dass sie sich an das Gebietsschema des Benutzers oder der Anwendung anpassen. Ein Gebietsschema ist eine Sammlung von Regeln und Einstellungen, die sprachliche und kulturelle Konventionen wie Sortierreihenfolge, Datumsformat usw. beschreiben. Der POSIX-Standard definiert diese Gebietsschemas. Im Allgemeinen bieten nur POSIX-kompatible Engines f\u00fcr regul\u00e4re Ausdr\u00fccke die richtige und vollst\u00e4ndige Unterst\u00fctzung f\u00fcr POSIX-Klammerausdr\u00fccke. Einige Nicht-POSIX-Regex-Engines unterst\u00fctzen POSIX-Zeichenklassen, aber normalerweise keine Sortierfolgen und Zeichen\u00e4quivalente. Engines f\u00fcr regul\u00e4re Ausdr\u00fccke, die Unicode unterst\u00fctzen, verwenden Unicode-Eigenschaften und -Skripts, um \u00e4hnliche Funktionen wie POSIX-Klammerausdr\u00fccke bereitzustellen. In Unicode-Regex-Engines stimmen Abk\u00fcrzungszeichenklassen wie \\w normalerweise mit allen relevanten Unicode-Zeichen \u00fcberein, wodurch die Verwendung von Gebietsschemata entf\u00e4llt.<\/p>\n<h2>Zeichenklassen<\/h2>\n<p>Verwechseln Sie den POSIX-Begriff \u201eZeichenklasse\u201c nicht mit dem, was normalerweise als Zeichenklasse f\u00fcr regul\u00e4re Ausdr\u00fccke bezeichnet wird. [x-z0-9] ist ein Beispiel daf\u00fcr, was in diesem Tutorial eine \u201eZeichenklasse\u201c und POSIX einen \u201eKlammerausdruck\u201c nennt. [:digit:] ist eine POSIX-Zeichenklasse, die innerhalb eines Klammerausdrucks wie [x-z[:digit:]] verwendet wird. Die Namen der POSIX-Zeichenklassen m\u00fcssen in Kleinbuchstaben geschrieben werden. Bei Verwendung in ASCII-Strings finden diese beiden regul\u00e4ren Ausdr\u00fccke genau die gleichen \u00dcbereinstimmungen: ein einzelnes Zeichen, das entweder x, y, z oder eine Ziffer ist. Bei Verwendung f\u00fcr Zeichenfolgen mit Nicht-ASCII-Zeichen kann die Klasse [:digit:] je nach Gebietsschema Ziffern in anderen Skripten enthalten. Der POSIX-Standard definiert 12 Zeichenklassen. Die folgende Tabelle listet alle 12 sowie die Klassen [:ascii:] und [:word:] auf, die auch einige Regex-Varianten unterst\u00fctzen. Die Tabelle zeigt auch \u00e4quivalente Zeichenklassen, die Sie in regul\u00e4ren ASCII- und Unicode-Ausdr\u00fccken verwenden k\u00f6nnen, wenn die POSIX-Klassen nicht verf\u00fcgbar sind. Die ASCII-\u00c4quivalente entsprechen genau dem, was im POSIX-Standard definiert ist. Die Unicode-\u00c4quivalente entsprechen den meisten Unicode-Regex-Engines. Der POSIX-Standard definiert kein Unicode-Gebietsschema. Einige Klassen haben auch Kurzform-\u00c4quivalente im Perl-Stil. Java unterst\u00fctzt keine POSIX-Klammerausdr\u00fccke, aber POSIX-Zeichenklassen, die den \\p-Operator verwenden. Obwohl die \\p-Syntax der Syntax f\u00fcr Unicode-Eigenschaften entlehnt ist, stimmen die POSIX-Klassen in Java nur mit ASCII-Zeichen \u00fcberein, wie unten angegeben. Bei den Klassennamen muss die Gro\u00df-\/Kleinschreibung beachtet werden. Im Gegensatz zur POSIX-Syntax, die nur innerhalb eines Klammerausdrucks verwendet werden kann, kann Javas \\p innerhalb und au\u00dferhalb von Klammerausdr\u00fccken verwendet werden. In Java 8 und fr\u00fcheren Versionen spielt es keine Rolle, ob Sie das Pr\u00e4fix Is mit der Syntax \\p verwenden oder nicht. In Java 8 sind \\p{Alnum} und \\p{IsAlnum} also identisch. In Java 9 und h\u00f6her gibt es einen Unterschied. Ohne das Pr\u00e4fix Is ist das Verhalten genau das gleiche wie in fr\u00fcheren Java-Versionen. Die Syntax mit dem Pr\u00e4fix Is entspricht jetzt auch Unicode-Zeichen. F\u00fcr \\p{IsPunct} bedeutet dies auch, dass es nicht mehr mit den ASCII-Zeichen \u00fcbereinstimmt, die in der Kategorie Symbol Unicode sind. <span class=\"Y2IQFc\" lang=\"de\">Die JGsoft-Variante unterst\u00fctzt sowohl die POSIX- als auch die Java-Syntax. Urspr\u00fcnglich stimmte es mit Unicode-Zeichen mit beiden Syntaxen \u00fcberein. Ab JGsoft V2 entspricht es nur ASCII-Zeichen bei Verwendung der POSIX-Syntax und Unicode-Zeichen bei Verwendung der Java-Syntax.<\/span><\/p>\n<table id=\"posixbrackets\" class=\"reference\">\n<tbody>\n<tr>\n<th>POSIX<\/th>\n<th>Description<\/th>\n<th>ASCII<\/th>\n<th>Unicode<\/th>\n<th>Shorthand<\/th>\n<th>Java<\/th>\n<\/tr>\n<tr>\n<td><tt>[:alnum:]<\/tt><\/td>\n<td>Alphanumeric characters<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccrange\">a-z<\/span><span class=\"regexccrange\">A-Z<\/span><span class=\"regexccrange\">0-9<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccspecial\">\\p{L}<\/span><span class=\"regexccspecial\">\\p{Nl}<\/span><span class=\"regexplain\"><br \/>\n<\/span><span class=\"regexccspecial\">\\p{Nd}<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Alnum}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:alpha:]<\/tt><\/td>\n<td>Alphabetic characters<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccrange\">a-z<\/span><span class=\"regexccrange\">A-Z<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{L}<\/span><span class=\"regexspecial\">\\p{Nl}<\/span><\/tt><\/td>\n<td><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Alpha}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:ascii:]<\/tt><\/td>\n<td>ASCII characters<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccrange\">\\x00-\\x7F<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{InBasicLatin}<\/span><\/tt><\/td>\n<td><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{ASCII}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:blank:]<\/tt><\/td>\n<td>Space and tab<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccliteral\">\u00a0<\/span><span class=\"regexccspecial\">\\t<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccspecial\">\\p{Zs}<\/span><span class=\"regexccspecial\">\\t<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\h<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Blank}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:cntrl:]<\/tt><\/td>\n<td>Control characters<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccrange\">\\x00-\\x1F<\/span><span class=\"regexccspecial\">\\x7F<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Cc}<\/span><\/tt><\/td>\n<td><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Cntrl}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:digit:]<\/tt><\/td>\n<td>Digits<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccrange\">0-9<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Nd}<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\d<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Digit}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:graph:]<\/tt><\/td>\n<td>Visible characters (anything except spaces and control characters)<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccrange\">\\x21-\\x7E<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccspecial\">^<\/span><span class=\"regexccspecial\">\\p{Z}<\/span><span class=\"regexccspecial\">\\p{C}<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Graph}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:lower:]<\/tt><\/td>\n<td>Lowercase letters<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccrange\">a-z<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Ll}<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\l<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Lower}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:print:]<\/tt><\/td>\n<td>Visible characters and spaces (anything except control characters)<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccrange\">\\x20-\\x7E<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\P{C}<\/span><\/tt><\/td>\n<td><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Print}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:punct:]<\/tt><\/td>\n<td>Punctuation (and symbols).<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccliteral\">!\"<\/span><span class=\"regexccspecial\">\\#<\/span><span class=\"regexccliteral\">$%&amp;'()*+,<\/span><span class=\"regexplain\"><br \/>\n<\/span><span class=\"regexccspecial\">\\-<\/span><span class=\"regexccliteral\">.\/:;&lt;=&gt;?@<\/span><span class=\"regexccspecial\">\\[<\/span><span class=\"regexplain\"><br \/>\n<\/span><span class=\"regexccspecial\">\\\\<\/span><span class=\"regexccspecial\">\\]<\/span><span class=\"regexccliteral\">^_\u2018{|}~<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{P}<\/span><\/tt><\/td>\n<td><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Punct}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:space:]<\/tt><\/td>\n<td>All whitespace characters, including line breaks<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccliteral\">\u00a0<\/span><span class=\"regexccspecial\">\\t<\/span><span class=\"regexccspecial\">\\r<\/span><span class=\"regexccspecial\">\\n<\/span><span class=\"regexccspecial\">\\v<\/span><span class=\"regexccspecial\">\\f<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccspecial\">\\p{Z}<\/span><span class=\"regexccspecial\">\\t<\/span><span class=\"regexccspecial\">\\r<\/span><span class=\"regexccspecial\">\\n<\/span><span class=\"regexccspecial\">\\v<\/span><span class=\"regexccspecial\">\\f<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\s<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Space}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:upper:]<\/tt><\/td>\n<td>Uppercase letters<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccrange\">A-Z<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Lu}<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\u<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{Upper}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:word:]<\/tt><\/td>\n<td>Word characters (letters, numbers and underscores)<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccrange\">A-Z<\/span><span class=\"regexccrange\">a-z<\/span><span class=\"regexccrange\">0-9<\/span><span class=\"regexccliteral\">_<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccspecial\">\\p{L}<\/span><span class=\"regexccspecial\">\\p{Nl}<\/span><span class=\"regexplain\"><br \/>\n<\/span><span class=\"regexccspecial\">\\p{Nd}<\/span><span class=\"regexccspecial\">\\p{Pc}<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\w<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{IsWord}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<td><tt>[:xdigit:]<\/tt><\/td>\n<td>Hexadecimal digits<\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccrange\">A-F<\/span><span class=\"regexccrange\">a-f<\/span><span class=\"regexccrange\">0-9<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><tt class=\"syntax\"><span class=\"regexccopen\">[<\/span><span class=\"regexccrange\">A-F<\/span><span class=\"regexccrange\">a-f<\/span><span class=\"regexccrange\">0-9<\/span><span class=\"regexccopen\">]<\/span><\/tt><\/td>\n<td><\/td>\n<td><tt class=\"syntax\"><span class=\"regexspecial\">\\p{XDigit}<\/span><\/tt><\/td>\n<\/tr>\n<tr>\n<th>POSIX<\/th>\n<th>Description<\/th>\n<th>ASCII<\/th>\n<th>Unicode<\/th>\n<th>Shorthand<\/th>\n<th>Java<\/th>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-2821 alignleft\" src=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-content\/uploads\/2014\/08\/CC_BY_NC_SA.png\" alt=\"CC_BY_NC_SA\" width=\"65\" height=\"23\" \/><span style=\"font-size: 10pt;\">by Speefak <span style=\"font-size: 8pt;\">| <\/span><\/span><a href=\"https:\/\/www.regular-expressions.info\/posixbrackets.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-size: 8pt;\">Infosource<\/span><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>POSIX-Klammerausdr\u00fccke POSIX-Klammerausdr\u00fccke sind eine besondere Art von Zeichenklassen. POSIX-Klammerausdr\u00fccke entsprechen einem Zeichen aus einer Reihe von Zeichen, genau wie normale Zeichenklassen. Sie verwenden dieselbe Syntax mit eckigen Klammern. Ein Bindestrich erzeugt einen Bereich und ein Caret am Anfang negiert den Klammerausdruck. Ein wesentlicher syntaktischer Unterschied besteht darin, dass der Backslash KEIN Metazeichen in einem POSIX-Klammerausdruck [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,24,54],"tags":[],"class_list":["post-6061","post","type-post","status-publish","format-standard","hentry","category-bash","category-it-syntax","category-shell-programme"],"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"speefak","author_link":"https:\/\/speefak.spdns.de\/oss_lifestyle\/author\/speefak_oss\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/category\/bash\/\" rel=\"category tag\">Bash<\/a> <a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/category\/it-syntax\/\" rel=\"category tag\">IT Syntax<\/a> <a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/category\/shell-programme\/\" rel=\"category tag\">Shell<\/a>","rttpg_excerpt":"POSIX-Klammerausdr\u00fccke POSIX-Klammerausdr\u00fccke sind eine besondere Art von Zeichenklassen. POSIX-Klammerausdr\u00fccke entsprechen einem Zeichen aus einer Reihe von Zeichen, genau wie normale Zeichenklassen. Sie verwenden dieselbe Syntax mit eckigen Klammern. Ein Bindestrich erzeugt einen Bereich und ein Caret am Anfang negiert den Klammerausdruck. Ein wesentlicher syntaktischer Unterschied besteht darin, dass der Backslash KEIN Metazeichen in einem POSIX-Klammerausdruck&hellip;","_links":{"self":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/posts\/6061","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/comments?post=6061"}],"version-history":[{"count":0,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/posts\/6061\/revisions"}],"wp:attachment":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/media?parent=6061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/categories?post=6061"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/tags?post=6061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}