Provided by: manpages-de_4.27.0-1_all bug

BEZEICHNUNG

       regex - Reguläre Ausdrücke gemäß POSIX.2

BESCHREIBUNG

       Reguläre Ausdrücke (»RA«), wie sie in POSIX.2 definiert sind, gibt es in zwei Arten: moderne RA (ungefähr
       die  von  egrep(1);  POSIX.2  nennt  sie »erweiterte« RA) und veraltete RA (ungefähr die von ed(1); gemäß
       POSIX.2 »einfache« RA). Veraltete RA existieren  hauptsächlich  zur  Rückwärtskompatibilität  in  einigen
       alten  Programmen;  sie  werden  am  Ende  beschrieben.  POSIX.2  lässt  einige Aspekte der RA-Syntax und
       -Semantik offen; »†« markiert Entscheidungen zu  diesen  Aspekten,  die  nicht  vollständig  portabel  zu
       anderen POSIX.2-Implementierungen sein können.

       Ein  (moderner) RA sind einer† oder mehrere† Zweige, getrennt durch »|«. Er stimmt mit allem überein, das
       mit einem der Zweige übereinstimmt.

       Ein Zweig sind eine† oder mehrere aneinandergehängte Stücke. Die Übereinstimmung erfolgt für  das  erste,
       gefolgt von der Übereinstimmung für das zweite und so weiter.

       Ein  Stück  ist  ein  Atom,  möglicherweise  gefolgt  von  einem  einzelnen†  »*«,  »+«,  »?«  oder einer
       Beschränkung. Ein Atom, auf das ein »*« folgt, stimmt mit einer Sequenz von 0 oder mehr Übereinstimmungen
       mit diesem Atom überein. Ein Atom, auf das ein »+« folgt, stimmt  mit  einer  Sequenz  von  1  oder  mehr
       Übereinstimmungen  mit diesem Atom überein. Ein Atom, auf das ein »?« folgt, stimmt mit einer Sequenz von
       0 oder 1 Übereinstimmungen mit diesem Atom überein.

       Eine  Beschränkung  ist  »{«  gefolgt  von  einer   vorzeichenlosen   Ganzzahl   in   Dezimaldarstellung,
       möglicherweise  gefolgt  von  »,«,  möglicherweise gefolgt von einer weiteren vorzeichenlosen Ganzzahl in
       Dezimaldarstellung, immer gefolgt von »}«. Die ganzen Zahlen müssen  zwischen  0  und  RE_DUP_MAX  (255†)
       einschließlich  liegen und falls es davon zwei gibt, darf die erste nicht größer als die zweite sein. Ein
       Atom, auf das eine Beschränkung folgt, die eine Ganzzahl i  und  kein  Komma  enthält,  stimmt  auf  eine
       Sequenz  von  genau i Übereinstimmungen des Atoms überein. Ein Atom, auf das eine Beschränkung folgt, die
       eine Ganzzahl i und ein Komma enthält, stimmt auf eine Sequenz von  i  oder  mehr  Übereinstimmungen  des
       Atoms  überein.  Ein Atom, auf das eine Beschränkung folgt, die zwei Ganzzahlen i und j enthalten, stimmt
       auf eine Sequenz von i bis einschließlich j Übereinstimmungen des Atoms überein.

       Ein Atom ist ein regulärer Ausdruck, der in »()« eingeschlossen ist (der  eine  Übereinstimmung  mit  dem
       regulären   Ausdruck   darstellt),   eine   leere  Menge  aus  »()«  (der  mit  der  leeren  Zeichenkette
       übereinstimmt)†, ein Klammerausdruck (siehe unten), ».« (das mit einem einzelnen Zeichen  übereinstimmt),
       »^« (das mit der leeren Zeichenkette am Zeilenanfang übereinstimmt), »$« (das mit der leeren Zeichenkette
       am  Zeilenende  übereinstimmt),  einem  »\«  gefolgt von einem der Zeichen »^.[$()|*+?{\« (das mit diesem
       Zeichen, das als normales Zeichen betrachtet wird, übereinstimmt), einem »\« gefolgt von  einem  normalen
       Zeichen†  (das mit dem Zeichen als normales Zeichen übereinstimmt, als ob »\« nicht vorhanden wäre†) oder
       einem einzelnen Zeichen mit keiner weiteren Bedeutung (was mit diesem  Zeichen  übereinstimmt).  Ein  »{«
       gefolgt  von  einem  Zeichen,  das  keine  Ziffer  ist,  ist ein normales Zeichen, nicht der Anfang einer
       Beschränkung†. Es ist verboten, einen RA mit »\« abzuschließen.

       Ein Klammerausdruck ist eine Liste von Zeichen, die in »[]« eingeschlossen sind. Er stimmt  normalerweise
       mit einem einzelnen Zeichen aus der Liste überein (siehe aber nachfolgend). Falls die Liste mit einem »^«
       beginnt,  stimmt  er mit jedem einzelnen Zeichen (siehe aber nachfolgend) überein, das nicht in der Liste
       ist. Falls zwei Zeichen in der Liste durch ein »-« getrennt sind, ist dies eine Abkürzung für den  ganzen
       Bereich  der  Zeichen  zwischen diesen zwei (einschließlich) in der Sortierordnung, beispielsweise stimmt
       »[0-9]« in ASCII mit jeder dezimalen Ziffer überein. Es ist verboten†, dass zwei  Bereiche  den  gleichen
       Endpunkt  haben,  beispielsweise »a-c-e«. Bereiche hängen stark von der Sortierordnung ab und portierbare
       Programme sollten vermeiden, davon abzuhängen.

       Um ein wörtliches »]« in die Liste aufzunehmen, verwenden Sie es als erstes Zeichen (möglicherweise  nach
       einem  »^«). Um ein wörtliches »-« aufzunehmen, verwenden Sie es als erstes oder letztes Zeichen oder als
       zweiten Endpunkt eines Bereichs. Um ein wörtliches »-« als ersten Endpunkt eines Bereiches zu  verwenden,
       schließen  Sie  es  in  »[.«  und  ».]«  ein,  um  es  zu  einem  Sortierordnungselement zu machen (siehe
       nachfolgend). Mit der Ausnahme dieser und  einiger  Kombinationen,  die  »[«  verwenden  (siehe  nächsten
       Absatz),  verlieren  alle anderen besonderen Zeichen, einschließlich »\«, innerhalb von Klammerausdrücken
       ihre besondere Bedeutung.

       Innerhalb eines Klammerausdrucks steht ein Sortierordnungselement (ein Zeichen, eine  Mehrzeichensequenz,
       das  so einsortiert wird, also ob es ein einzelnes Zeichen wäre oder ein Zuordnungs-Sequenzname für eines
       davon), das in »[.« und ».]« eingeschlossen ist, für die Zeichensequenz des Sortierordnungselements.  Die
       Sequenz  ist  ein  einzelnes  Element  der  Klammerausdrucksliste.  Eine  Klammerausdrucksliste,  die ein
       Mehrzeichen-Sortierordnungselement enthält, kann daher mit mehr als einem Zeichen  übereinstimmen,  falls
       beispielsweise  die Sortierordnung ein Zuordnungslement »ch« enthält, dann stimmt der RA »[[.ch.]]*c« mit
       den ersten fünf Zeichen von »chchcc« überein.

       Innerhalb eines Klammerausdrucks ist ein in »[=« und »=]«  eingeschlossenes  Sortierordnungselement  eine
       Äquivalenzklasse, die für eine Abfolge von Zeichen aller Sortierordnungselemente steht, die äquivalent zu
       diesem  sind,  einschließlich  ihm  selbst.  (Falls es keine anderen äquivalenten Sortierordnungselemente
       gibt, erfolgt die Behandlung also ob die Begrenzer »[.« und ».]« wären.) Falls beispielsweise o und ô die
       Mitglieder einer Äquivalenzklasse wären, dann wären »[[=o=]]«, »[[=ô=]]« und »[oô]«  alle  synonym.  Eine
       Äquivalenzklasse darf nicht† der Endpunkt eines Bereichs sein.

       Innerhalb eines Klammerausdrucks steht der Name einer Zeichenklasse, eingeschlossen in »[:« und »:]«, für
       eine Liste aller Zeichen, die zu der Klasse gehören. Standard-Zeichenklassennamen sind:

              alnum   digit   punct
              alpha   graph   space
              blank   lower   upper
              cntrl   print   xdigit

       Diese  stehen  für  die in wctype(3) definierten Zeichenklassen. Eine Locale könnte andere bereitstellen.
       Eine Zeichenklasse darf nicht als Endpunkt eines Bereichs verwandt werden.

       Falls ein RA mit mehr als einer Teilzeichenkette  einer  gegebenen  Zeichenkette  übereinstimmen  könnte,
       passt der RA auf die Teilzeichenkette, die am frühsten in der Zeichenkette beginnt. Falls der RA auf mehr
       als eine Teilzeichenkette passen könnte, die an diesem Punkt beginnt, stimmt er mit der längsten überein.
       Teilausdrücke  passen auch auf die längsten möglichen Teilzeichenketten, mit der Nebenbedingung, dass die
       gesamte Übereinstimmung so lang wie möglich sein muss, wobei Teilausdrücke, die  früher  im  RA  beginnen
       gegenüber  späteren  Priorität  haben.  Beachten  Sie, dass Teilausdrücke höherer Ordnung daher Priorität
       gegenüber ihren Komponententeilausdrücken niedrigerer Ordnung haben.

       Die Länge von Übereinstimmungen wird in Zeichen gemessen, nicht in Sortierordnungselementen.  Eine  leere
       Zeichenkette  wird  als  länger als keine Übereinstimmung betrachtet. Beispielsweise stimmt »bb*« mit den
       drei mittleren Zeichen von »abbbc« überein, »(wee|week)(knights|nights) stimmt mit allen zehn Zeichen von
       »weeknights« überein. Wird »(.*).*« auf »abc« angewandt, passt der  geklammerte  Unterausdruck  auf  alle
       drei  Zeichen;  und  wenn  »(a*)*«  mit  »bc«  verglichen wird, passen der gesamte RA und der geklammerte
       Unterausdruck auf die leere Zeichenkette.

       Falls der Vergleich unabhängig von der Groß-/Kleinschreibung verlangt wird, ist die Auswirkung so, als ob
       alle Unterscheidungen zwischen Groß-  und  Kleinschreibung  im  Alphabet  verschwunden  wären.  Wenn  ein
       alphabetisches  Zeichen,  das  in  verschiedenen  Groß-/Kleinschreibungen existiert, als normales Zeichen
       außerhalb eines Klammerausdrucks auftaucht, wird es effektiv in  einen  Klammerausdruck,  der  Groß-  und
       Kleinschreibung  enthält,  umgewandelt.  Beispielsweise  wird  »x«  zu  »[xX]«.  Wenn  es innerhalb eines
       Klammerausdrucks  auftaucht,  werden  alle   Entsprechungen   in   der   Groß-/Kleinschreibung   zu   dem
       Klammerausdruck hinzugefügt, so dass beispielsweise aus »[x]« »[xX]« und aus »[^x]« »[^xX]« wird.

       Die  Länge  des  RAs  unterliegt  keiner besonderen Beschränkung†. Programme, die portierbar sein sollen,
       sollten die RA kürzer als 256 byte halten, da  eine  POSIX-konforme  Implementierung  verweigern  könnte,
       längere RA zu akzeptieren.

       Veraltete  (»einfache«)  reguläre  Ausdrücke unterscheiden sich in verschiedenen Hinsichten. »|«, »+« und
       »?« sind gewöhnliche Zeichen und es gibt kein Äquivalent  für  ihre  Funktionalität.  Die  Begrenzer  für
       Beschränkungen  sind  »\{« und »\}«; »{« und »}« alleinstehend sind gewöhnliche Zeichen. Die Klammern zum
       Verschachteln von Unterausdrücken sind »\(« und »\)«, »(« und »)« alleinstehend sind gewöhnliche Zeichen.
       »^« ist  ein  gewöhnliches  Zeichen  außer  am  Anfang  eines  RA  oder†  am  Anfang  eines  geklammerten
       Unterausdrucks.  »$« ist ein gewöhnliches Zeichen außer am Ende eines RA oder† am Ende eines geklammerten
       Unterausdrucks. »*« ist ein gewöhnliches  Zeichen,  falls  es  am  Anfang  des  RA  oder  am  Anfang  des
       geklammerten Unterausdrucks (nach dem möglichen einleitenden »^«) auftaucht.

       Schließlich  gibt  es  eine  neue  Art  von Atom, eine Rückwärtsreferenz: »\«, gefolgt von einer von Null
       verschiedenen Ziffer d stimmt mit der gleichen Abfolge  von  Zeichen  überein,  die  auch  mit  dem  dten
       geklammerten   Unterausdruck  übereinstimmt  (die  Nummerierung  der  Unterausdrücke  erfolgt  durch  die
       Positionen ihrer öffnenden Klammern, von links nach rechts), so dass beispielsweise »\([bc]\)\1« mit »bb«
       oder »cc« aber nicht mit »bc« übereinstimmt.

FEHLER

       Die Existenz von zwei Arten von RAs ist Murks.

       Die aktuelle POSIX.2-Spezifikation sagt, dass »)« ein gewöhnliches Zeichen ist, falls  das  passende  »(«
       fehlt;  dies  war  ein  ungeplantes  Ergebnis  eines  Formulierungsfehlers  und  dies wird wahrscheinlich
       geändert. Verlassen Sie sich daher nicht darauf.

       Rückwärtsreferenzen sind  ein  schrecklicher  Murks.  Sie  stellen  ein  großes  Problem  für  effiziente
       Implementierungen  dar.  Sie  sind  auch  etwas  vage  definiert  (stimmt  »a\(\(b\)*\2\)*d«  mit »abbbd«
       überein?). Verlassen Sie sich nicht darauf.

       Die Spezifikation von POSIX.2 von Groß-/Kleinschreibung-unabhängiger Übereinstimmung ist vage.  Die  oben
       angegebene  Definition von »eine Groß-/Kleinschreibungsvariante impliziert alle« ist der aktuelle Konsens
       zwischen den Implementierern über die richtige Interpretation.

AUTOR

       Diese Seite entstammt Henry Spencers Paket Regex.

SIEHE AUCH

       grep(1), regex(3)

       POSIX.2, Abschnitt 2.8 (Notation Regulärer Ausdrücke).

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder  neuer
       bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn  Sie  Fehler  in  der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die
       Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                             15. Juni 2024                                         regex(7)