.\" -*- coding: UTF-8 -*- .ie t .ds dg \(dg .el .ds dg (!) '\" t .\" From Henry Spencer's regex package (as found in the apache .\" distribution). The package carries the following copyright: .\" .\" Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. .\" %%%LICENSE_START(MISC) .\" This software is not subject to any license of the American Telephone .\" and Telegraph Company or of the Regents of the University of California. .\" .\" Permission is granted to anyone to use this software for any purpose .\" on any computer system, and to alter it and redistribute it, subject .\" to the following restrictions: .\" .\" 1. The author is not responsible for the consequences of use of this .\" software, no matter how awful, even if they arise from flaws in it. .\" .\" 2. The origin of this software must not be misrepresented, either by .\" explicit claim or by omission. Since few users ever read sources, .\" credits must appear in the documentation. .\" .\" 3. Altered versions must be plainly marked as such, and must not be .\" misrepresented as being the original software. Since few users .\" ever read sources, credits must appear in the documentation. .\" .\" 4. This notice may not be removed or altered. .\" %%%LICENSE_END .\" .\" In order to comply with `credits must appear in the documentation' .\" I added an AUTHOR paragraph below - aeb. .\" .\" In the default nroff environment there is no dagger \(dg. .\" .\" 2005-05-11 Removed discussion of `[[:<:]]' and `[[:>:]]', which .\" appear not to be in the glibc implementation of regcomp .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH regex 7 "8. März 2023" "Linux man\-pages 6.05.01" .SH BEZEICHNUNG regex \- Reguläre Ausdrücke gemäß POSIX.2 .SH BESCHREIBUNG Reguläre Ausdrücke (»RA«), wie sie in POSIX.2 definiert sind, gibt es in zwei Arten: moderne RA (ungefähr die von \fBegrep\fP(1); POSIX.2 nennt sie »erweiterte« RA) und veraltete RA (ungefähr die von \fBed\fP(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; »\(dg« markiert Entscheidungen zu diesen Aspekten, die nicht vollständig portabel zu anderen POSIX.2\-Implementierungen sein können. .PP Ein (moderner) RA sind einer\(dg oder mehrere\(dg \fIZweige\fP, getrennt durch »|«. Er stimmt mit allem überein, das mit einem der Zweige übereinstimmt. .PP Ein Zweig sind eine\(dg oder mehrere aneinandergehängte \fIStücke\fP. Die Übereinstimmung erfolgt für das erste, gefolgt von der Übereinstimmung für das zweite und so weiter. .PP Ein Stück ist ein \fIAtom\fP, möglicherweise gefolgt von einem einzelnen\(dg »*«, »+«, »?« oder einer \fIBeschränkung\fP. 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. .PP Eine \fIBeschränkung\fP 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 \fBRE_DUP_MAX\fP (255\(dg) 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 \fIi\fP und kein Komma enthält, stimmt auf eine Sequenz von genau \fIi\fP Übereinstimmungen des Atoms überein. Ein Atom, auf das eine Beschränkung folgt, die eine Ganzzahl \fIi\fP und ein Komma enthält, stimmt auf eine Sequenz von \fIi\fP oder mehr Übereinstimmungen des Atoms überein. Ein Atom, auf das eine Beschränkung folgt, die zwei Ganzzahlen \fIi\fP und \fIj\fP enthalten, stimmt auf eine Sequenz von \fIi\fP bis einschließlich \fIj\fP Übereinstimmungen des Atoms überein. .PP Ein Atom ist ein regulärer Ausdruck, der in »\fI()\fP« eingeschlossen ist (der eine Übereinstimmung mit dem regulären Ausdruck darstellt), eine leere Menge aus »\fI()\fP« (der mit der leeren Zeichenkette übereinstimmt)\(dg, ein \fIKlammerausdruck\fP (siehe unten), ».« (das mit einem einzelnen Zeichen übereinstimmt), »\[ha]« (das mit der leeren Zeichenkette am Zeilenanfang übereinstimmt), »$« (das mit der leeren Zeichenkette am Zeilenende übereinstimmt), einem »\e« gefolgt von einem der Zeichen »\fI\[ha].[$()|*+?{\e\fP« (das mit diesem Zeichen, das als normales Zeichen betrachtet wird, übereinstimmt), einem »\e« gefolgt von einem normalen Zeichen\(dg (das mit dem Zeichen als normales Zeichen übereinstimmt, als ob »\e« nicht vorhanden wäre\(dg) 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\(dg. Es ist verboten, einen RA mit »\e« abzuschließen. .PP Ein \fIKlammerausdruck\fP ist eine Liste von Zeichen, die in »\fI[]\fP« eingeschlossen sind. Er stimmt normalerweise mit einem einzelnen Zeichen aus der Liste überein (siehe aber nachfolgend). Falls die Liste mit einem »\[ha]« beginnt, stimmt er mit jedem einzelnen Zeichen (siehe aber nachfolgend) überein, das \fInicht\fP in der Liste ist. Falls zwei Zeichen in der Liste durch ein »\-« getrennt sind, ist dies eine Abkürzung für den ganzen \fIBereich\fP der Zeichen zwischen diesen zwei (einschließlich) in der Sortierordnung, beispielsweise stimmt »\fI[0\-9]\fP« in ASCII mit jeder dezimalen Ziffer überein. Es ist verboten\(dg, dass zwei Bereiche den gleichen Endpunkt haben, beispielsweise »\fIa\-c\-e\fP«. Bereiche hängen stark von der Sortierordnung ab und portierbare Programme sollten vermeiden, davon abzuhängen. .PP Um ein wörtliches »]« in die Liste aufzunehmen, verwenden Sie es als erstes Zeichen (möglicherweise nach einem »\[ha]«). 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 »\fI[.\fP« und »\fI.]\fP« 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 »\e«, innerhalb von Klammerausdrücken ihre besondere Bedeutung. .PP 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 »\fI[.\fP« und »\fI.]\fP« 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 »\fI[[.ch.]]*c\fP« mit den ersten fünf Zeichen von »chchcc« überein. .PP Innerhalb eines Klammerausdrucks ist ein in »\fI[=\fP« und »\fI=]\fP« 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 »\fI[.\fP« und »\fI.]\fP« wären.) Falls beispielsweise o und \(^o die Mitglieder einer Äquivalenzklasse wären, dann wären »\fI[[=o=]]\fP«, »\fI[[=\(^o=]]\fP« und »\fI[o\(^o]\fP« alle synonym. Eine Äquivalenzklasse darf nicht\(dg der Endpunkt eines Bereichs sein. .PP Innerhalb eines Klammerausdrucks steht der Name einer \fIZeichenklasse\fP, eingeschlossen in »\fI[:\fP« und »\fI:]\fP«, für eine Liste aller Zeichen, die zu der Klasse gehören. Standard\-Zeichenklassennamen sind: .PP .RS .TS l l l. alnum digit punct alpha graph space blank lower upper cntrl print xdigit .TE .RE .PP .\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666 .\" The following does not seem to apply in the glibc implementation .\" .PP .\" There are two special cases\*(dg of bracket expressions: .\" the bracket expressions "\fI[[:<:]]\fP" and "\fI[[:>:]]\fP" match .\" the null string at the beginning and end of a word respectively. .\" A word is defined as a sequence of .\" word characters .\" which is neither preceded nor followed by .\" word characters. .\" A word character is an .\" .I alnum .\" character (as defined by .\" .BR wctype (3)) .\" or an underscore. .\" This is an extension, .\" compatible with but not specified by POSIX.2, .\" and should be used with .\" caution in software intended to be portable to other systems. Diese stehen für die in \fBwctype\fP(3) definierten Zeichenklassen. Eine Locale könnte andere bereitstellen. Eine Zeichenklasse darf nicht als Endpunkt eines Bereichs verwandt werden. .PP 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. .PP 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 »\fIbb*\fP« mit den drei mittleren Zeichen von »abbbc« überein, »\fI(wee|week)(knights|nights)\fP stimmt mit allen zehn Zeichen von »weeknights« überein. Wird »\fI(.*).*\fP« auf »abc« angewandt, passt der geklammerte Unterausdruck auf alle drei Zeichen; und wenn »\fI(a*)*\fP« mit »bc« verglichen wird, passen der gesamte RA und der geklammerte Unterausdruck auf die leere Zeichenkette. .PP 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 »\fI[xX]\fP«. Wenn es innerhalb eines Klammerausdrucks auftaucht, werden alle Entsprechungen in der Groß\-/Kleinschreibung zu dem Klammerausdruck hinzugefügt, so dass beispielsweise aus »\fI[x]\fP« »\fI[xX]\fP« und aus »\fI[\[ha]x]\fP« »\fI[\[ha]xX]\fP« wird. .PP Die Länge des RAs unterliegt keiner besonderen Beschränkung\(dg. 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. .PP 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 »\fI\e{\fP« und »\fI\e}\fP«; »{« und »}« alleinstehend sind gewöhnliche Zeichen. Die Klammern zum Verschachteln von Unterausdrücken sind »\fI\e(\fP« und »\fI\e)\fP«, »(« und »)« alleinstehend sind gewöhnliche Zeichen. »\[ha]« ist ein gewöhnliches Zeichen außer am Anfang eines RA oder\(dg am Anfang eines geklammerten Unterausdrucks. »$« ist ein gewöhnliches Zeichen außer am Ende eines RA oder\(dg 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 »\[ha]«) auftaucht. .PP Schließlich gibt es eine neue Art von Atom, eine \fIRückwärtsreferenz\fP: »\e«, gefolgt von einer von Null verschiedenen Ziffer \fId\fP stimmt mit der gleichen Abfolge von Zeichen überein, die auch mit dem \fId\fPten geklammerten Unterausdruck übereinstimmt (die Nummerierung der Unterausdrücke erfolgt durch die Positionen ihrer öffnenden Klammern, von links nach rechts), so dass beispielsweise »\fI\e([bc]\e)\e1\fP« mit »bb« oder »cc« aber nicht mit »bc« übereinstimmt. .SH FEHLER Die Existenz von zwei Arten von RAs ist Murks. .PP 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. .PP 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 »\fIa\e(\e(b\e)*\e2\e)*d\fP« mit »abbbd« überein?). Verlassen Sie sich nicht darauf. .PP .\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666 .\" The following does not seem to apply in the glibc implementation .\" .PP .\" The syntax for word boundaries is incredibly ugly. 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. .SH AUTOR .\" Sigh... The page license means we must have the author's name .\" in the formatted output. Diese Seite entstammt Henry Spencers Paket Regex. .SH "SIEHE AUCH" \fBgrep\fP(1), \fBregex\fP(3) .PP POSIX.2, Abschnitt 2.8 (Notation Regulärer Ausdrücke). .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .