|
|
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 39: |
Zeile 39: |
| | colspan="2" | '''Bibliotheken der Programmiersprachen ''' | | | colspan="2" | '''Bibliotheken der Programmiersprachen ''' |
| |- | | |- |
| | | * [http://de.wikipedia.org/wiki/Sed_%28Unix%29 sed] | | || |
| | * [http://de.wikipedia.org/wiki/Sed_%28Unix%29 sed] |
| * [http://de.wikipedia.org/wiki/Grep grep] | | * [http://de.wikipedia.org/wiki/Grep grep] |
| * [http://de.wikipedia.org/wiki/Emacs emacs] | | * [http://de.wikipedia.org/wiki/Emacs emacs] |
| * vi | | * vi |
| | | * [http://de.wikipedia.org/wiki/Perl_%28Programmiersprache%29 Perl] | | || |
| | * [http://de.wikipedia.org/wiki/Perl_%28Programmiersprache%29 Perl] |
| * [http://de.wikipedia.org/wiki/C_%28Programmiersprache%29 C] | | * [http://de.wikipedia.org/wiki/C_%28Programmiersprache%29 C] |
| * [http://de.wikipedia.org/wiki/Java_%28Programmiersprache%29 Java] | | * [http://de.wikipedia.org/wiki/Java_%28Programmiersprache%29 Java] |
| * [http://de.wikipedia.org/wiki/Python_%28Programmiersprache%29 Python] | | * [http://de.wikipedia.org/wiki/Python_%28Programmiersprache%29 Python] |
| | | * [http://de.wikipedia.org/wiki/PHP PHP] | | || |
| | * [http://de.wikipedia.org/wiki/PHP PHP] |
| * [http://de.wikipedia.org/wiki/Ruby_%28Programmiersprache%29 Ruby] | | * [http://de.wikipedia.org/wiki/Ruby_%28Programmiersprache%29 Ruby] |
| * [http://de.wikipedia.org/wiki/.NET .NET]-Framework | | * [http://de.wikipedia.org/wiki/.NET .NET]-Framework |
| |-
| |
| |} | | |} |
| | |
| Auch die [http://de.wikipedia.org/wiki/Textverarbeitung Textverarbeitung] und die [http://de.wikipedia.org/wiki/Tabellenkalkulation Tabellenkalkulation] des Office-Paketes [http://de.wikipedia.org/wiki/OpenOffice.org OpenOffice.org] bieten die Möglichkeit, mit regulären Ausdrücken im Text zu suchen. | | Auch die [http://de.wikipedia.org/wiki/Textverarbeitung Textverarbeitung] und die [http://de.wikipedia.org/wiki/Tabellenkalkulation Tabellenkalkulation] des Office-Paketes [http://de.wikipedia.org/wiki/OpenOffice.org OpenOffice.org] bieten die Möglichkeit, mit regulären Ausdrücken im Text zu suchen. |
|
| |
|
| === Implementierungen === | | === Implementierungen === |
| ; Basic Regular Expressions (BRE)
| | {| class="wikitable options" |
| * „grundlegende“ reguläre Ausdrücke
| |
| ; Extended Regular Expressions (ERE)
| |
| * „erweiterte“ reguläre Ausdrücke
| |
| ; Perl Compatible Regular Expressions] (PCRE)
| |
| * In Programmiersprachen haben sich überwiegend die [http://de.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions Perl Compatible Regular Expressions] (PCRE) durchgesetzt, die sich an der Umsetzung in Perl orientieren.
| |
| | |
| Einige Programme, etwa der [http://de.wikipedia.org/wiki/Texteditor Texteditor] [http://de.wikipedia.org/wiki/Vim Vim], ermöglichen, zwischen verschiedenen Syntaxen zu wechseln.
| |
| | |
| siehe [http://de.wikipedia.org/wiki/Portable_Operating_System_Interface POSIX.2]
| |
| | |
| == Suchmuster ==
| |
| [[Regular Expression/Suchmuster]]
| |
| | |
| == Listen ==
| |
| [[Regular Expression/Listen]]
| |
| | |
| == Zeichenklassen ==
| |
| [[Regular Expression/Zeichenklassen]]
| |
| | |
| == Quantoren ==
| |
| ; Wiederholungsfaktoren (Quantoren)
| |
| [http://de.wikipedia.org/wiki/Quantor Quantoren] (engl. ''quantifier'', auch ''Quantifizierer'') erlauben es, den vorherigen Ausdruck in verschiedener Vielfachheit in der Zeichenkette zuzulassen.
| |
| | |
| {| class="wikitable sortable" | |
| |- | | |- |
| | | <tt>'''?'''</tt> | | | Basic Regular Expressions (BRE) || „grundlegende“ reguläre Ausdrücke |
| | | Der voranstehende Ausdruck ist optional, er kann einmal vorkommen, muss es aber nicht, d. h. der Ausdruck kommt null- oder einmal vor. (Dies entspricht <tt>'''{''0'',''1''}'''</tt>) | |
| |- | | |- |
| | | <tt>'''+'''</tt> | | | Extended Regular Expressions (ERE) || „erweiterte“ reguläre Ausdrücke |
| | | Der voranstehende Ausdruck muss mindestens einmal vorkommen, darf aber auch mehrfach vorkommen. (Dies entspricht <tt>'''{''1'',}'''</tt>)
| |
| |-
| |
| | | <tt>'''*'''</tt>
| |
| | | Der voranstehende Ausdruck darf beliebig oft (auch keinmal) vorkommen. (Dies entspricht <tt>'''{''0'',}'''</tt>)
| |
| |-
| |
| | >''n''</span>}'''</tt>
| |
| | | Der voranstehende Ausdruck muss exakt ''n''-mal vorkommen.
| |
| |-
| |
| | >''min''</span>,}'''</tt>
| |
| | | Der voranstehende Ausdruck muss mindestens ''min''-mal vorkommen.
| |
| |-
| |
| | >''max''</span>}'''</tt>
| |
| | | Der voranstehende Ausdruck muss mindestens ''min''-mal und darf maximal ''max''-mal vorkommen.
| |
| |-
| |
| | >''max''</span>}'''</tt>
| |
| | | Der voranstehende Ausdruck darf maximal ''max''-mal vorkommen. | |
| | |
| |- | | |- |
| | | Perl Compatible Regular Expressions (PCRE) || In Programmiersprachen haben sich überwiegend die [http://de.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions Perl Compatible Regular Expressions] (PCRE) durchgesetzt, die sich an der Umsetzung in Perl orientieren. |
| |} | | |} |
| ==== Funktionsweise ====
| |
| Die Quantoren beziehen sich dabei auf den '''vorhergehenden''' regulären Ausdruck, jedoch nicht zwangsläufig auf die durch ihn gefundene Übereinstimmung. * So wird zwar zum Beispiel durch <tt>a+</tt> ein „a“ oder auch „aaaa“ vertreten,
| |
| * jedoch entspricht <tt>[0-9]+</tt> nicht nur sich wiederholenden ''gleichen'' Ziffern, sondern auch Folgen gemischter Ziffern, beispielsweise „072345“.
| |
|
| |
|
| ==== Beispiele ====
| | Einige Programme, etwa der [http://de.wikipedia.org/wiki/Texteditor Texteditor] [http://de.wikipedia.org/wiki/Vim Vim], ermöglichen, zwischen verschiedenen Syntaxen zu wechseln. |
| „[ab]+“ * entspricht „a“, „b“, „aa“, „bbaab“ etc.
| | * siehe [http://de.wikipedia.org/wiki/Portable_Operating_System_Interface POSIX.2] |
| | |
| „[0-9]{2,5}“ * entspricht zwei, drei, vier oder fünf Ziffern in Folgez. B. „42“ oder „54072“, jedoch nicht den Zeichenfolgen „0“, „1.1“ oder „a1a1“.
| |
| | |
| === Gieriges Verhalten von Quantoren ===
| |
| Quantoren sind standardmäßig „gierig“ (engl. ''greedy'') implementiert.
| |
| | |
| Soll eine Zeichenkette ''nur'' aus dem gesuchten Muster bestehen (und es nicht nur enthalten), so muss in den meisten Implementierungen explizit definiert werden, dass das Muster vom Anfang (<tt>\A</tt> oder <tt>^</tt>) bis zum Ende der Zeichenkette (<tt>\Z</tt>, <tt>\z</tt> oder <tt>$</tt>) reichen soll.
| |
| * Andernfalls erkennt zum Beispiel <tt>[0-9]{2,5}</tt> auch bei der Zeichenkette „1234507“ die Teilzeichenkette „12345“.
| |
| * Aus dem gleichen Grund würde beispielsweise <tt>a*</tt> immer einen Treffer ergeben, da jede Zeichenfolge – selbst das [http://de.wikipedia.org/wiki/Leeres_Wort leere Wort] „“ – mindestens 0-mal das Zeichen „a“ enthält.
| |
| * Das heißt, ein regulärer Ausdruck wird zur größtmöglichen Übereinstimmung aufgelöst.
| |
| | |
| ==== Genügsame Quantoren ====
| |
| Da dieses Verhalten jedoch nicht immer so gewollt ist, lassen sich bei vielen neueren Implementierungen Quantoren als „genügsam“ oder „zurückhaltend“ (engl. ''non-greedy'', ''reluctant'') deklarieren.
| |
| * Zum Beispiel wird in Perl hierfür dem Quantor ein Fragezeichen <tt>'''?'''</tt> nachgestellt.
| |
| * Die Implementierung von genügsamen Quantoren ist vergleichsweise aufwändig (erfordert [http://de.wikipedia.org/wiki/Backtracking Backtracking]), weshalb nicht alle Implementierungen diese unterstützen.
| |
| | |
| ''' Beispiel (Perl-Syntax) '''
| |
| * Angenommen, es wird der reguläre Ausdruck <tt>'''A.*B'''</tt> auf die Zeichenfolge „ABCDEB“ angewandt, so würde er sie komplett als „ABCDEB“ finden.
| |
| * Mit Hilfe des „non-greedy“-Quantors „<tt>*?</tt>“ matcht der nun modifizierte Ausdruck – also <tt>'''A.*?B'''</tt> – nur die Zeichenkette „AB“, bricht also die Suche nach dem ersten gefundenen „B“ ab.
| |
| * Ein gleichwertiger regulärer Ausdruck für Interpreter, die diesen Quantor nicht unterstützen, wäre <tt>A[^B]*B</tt>.
| |
| | |
| Die Zeichen <tt>^</tt> und <tt>$</tt> matchen im ''multiline-''Modus (wenn der m-Modifier gesetzt wird) auch Zeilenanfänge und -enden.
| |
| | |
| ==== Possessives Verhalten ====
| |
| Eine Variante des oben beschriebenen gierigen Verhaltens ist das ''possessive Matching''.
| |
| * Da hierbei jedoch das Backtracking verhindert wird, werden einmal übereinstimmende Zeichen nicht wieder freigegeben.
| |
| * Aufgrund dessen finden sich in der Literatur auch die synonymen Bezeichnungen ''atomic grouping'', ''independent subexpression'' oder ''non-backtracking subpattern''.
| |
| * Die Syntax für diese Konstrukte variiert bei den verschiedenen Programmiersprachen.
| |
| | |
| Ursprünglich wurden solche Teilausdrücke ''(Subpattern)'' in Perl durch <tt>'''(?>'''<span >''Ausdruck''</span>''')'''</tt> formuliert.
| |
| | |
| Daneben existieren seit Perl 5.10 die äquivalenten, in Java bereits üblichen possessiven Quantoren <tt>++</tt>, <tt>*+</tt>, <tt>?+</tt> und <tt>{''min'',''max''}+</tt>.
| |
| | |
| Angenommen es wird auf die Zeichenfolge „ABCDEB“ der reguläre Ausdruck <tt>'''A.*+B'''</tt> angewandt, so würde er keine Übereinstimmung finden.
| |
| * Bei der Abarbeitung des regulären Ausdrucks würde der Teil <tt>'''.*+'''</tt> bis zum Ende der Zeichenkette übereinstimmen.
| |
| * Um jedoch den gesamten Ausdruck zu matchen, müsste ein Zeichen (hier also das „B“) wieder freigegeben werden.
| |
| * Der possessive Quantor verbietet dies aufgrund des unterdrückten Backtrackings, weshalb keine erfolgreiche Übereinstimmung gefunden werden kann.
| |
| | |
| == Gruppierungen und Referenzen ==
| |
| === Gruppierungen ===
| |
| Ausdrücke lassen sich mit runden Klammern <tt>'''('''</tt> und <tt>''')'''</tt> ''zusammenfassen'':
| |
| '''„<tt>(abc)+</tt>“ erlaubt ein „abc“, „abcabc“, „abcabcabc“ etc.'''
| |
| | |
| === Rückreferenzen ===
| |
| Einige Implementierungen speichern die gefundenen Übereinstimmungen von Gruppierungen ab und ermöglichen deren Wiederverwendung im regulären Ausdruck oder bei der Textersetzung.
| |
| | |
| Diese werden ''Rückwärtsreferenzen'' (engl. ''back references'') genannt.
| |
| | |
| Häufig wird dazu die Schreibweise <tt>'''\''n'''''</tt> oder <tt>'''$''n'''''</tt> verwendet, wobei ''n'' die Übereinstimmung der ''n''-ten Gruppierung entspricht.
| |
| | |
| Eine Sonderstellung stellt dabei ''n''=0 dar, das meist für die Übereinstimmung des gesamten regulären Ausdruck steht.
| |
| | |
| '''Beispiel '''* Ein Suchen und Ersetzen mit <tt>'''AA(.*?)BB'''</tt> als regulären Suchausdruck und <tt>'''\1'''</tt> als Ersetzung ersetzt alle Zeichenketten, die von '''AA''' und '''BB''' eingeschlossen sind, durch den zwischen '''AA''' und '''BB''' enthaltenen Text.
| |
| * D.h. '''AA''' und '''BB''' und der Text dazwischen werden ersetzt durch den Text, der ursprünglich zwischen '''AA''' und '''BB''' stand, also fehlen '''AA''' und '''BB''' im Ergebnis.
| |
| | |
| ==== Geklammerte Ausdrücke referenzieren ====
| |
| Eine Teilzeichenkette, die auf einen geklammerten Teilausdruck gepasst hat, lässt sich durch "<tt>\n</tt>" referenzieren. Dabei steht "<tt>n</tt>" für eine einzelne Ziffer, die den n-ten geklammerten Teilausdruck auswählt.
| |
| | |
| ==== Bezugnahme auf die Ergebnismenge ====
| |
| Bei den bisherigen Anweisungen wurde der gesamte Zeileninhalt ausgegeben. Es gibt jedoch die Möglichkeit, direkt auf die effektive Ergebnismenge oder einen Teil daraus Bezug zu nehmen.
| |
| | |
| Die hierfür erforderliche s-Anweisung führt kein Suchen und Ersetzen durch, sondern durchsucht den Datenstrom anhand der RE und bildet aufgrund des Ausdrucks in () nochmals eine Teilmenge, die ausgegeben werden kann.
| |
| | |
| ''' BeispielTESTEN!! '''
| |
| Aus der folgenden Zeile soll nur das Element "blau" ausgegeben werden.
| |
| | |
| '''echo "-rot-blau-gelb" | sed 's/.*\(blau\).*/\1/g''''
| |
| Die gesamte RE lautet: /.*blau.*/
| |
| | |
| Es soll jedoch nur der Teil der Ergebnismenge ausgegeben werden, der "blau" enthält. Folglich ist "blau" in runde Klammern zu setzen.
| |
| | |
| /.*\(blau\).*/
| |
| '''echo "-rot-blau-gelb" | sed 's/.*\(blau\).*/\1/g''''
| |
| | |
| * s"Suchen und Ersetzen", wobei kein "Ersetzen" durchgeführt wird
| |
| * .*Beginn der RE: beliebiges Zeichen 0-n mal
| |
| * \(blau\)"blau" soll, falls es sich aus der Ergebnismenge extrahieren läßt, ausgegeben werden
| |
| * .*Ende der RE: beliebiges Zeichen 0-n mal
| |
| * \1die Ergebnismenge der 1. geklammerten RE wird ausgegeben
| |
| * bei mehreren REs, wird jeder RE eine Zahl zugeordnet: \1 = 1.RE \2 = 2.RE usw.
| |
| | |
| ==== Praktische Anwendung von Rückreferenzen ====
| |
| Umschreiben einer URL
| |
| | |
| Image
| |
| | |
| === Gruppierungen ohne Rückreferenz ===
| |
| ''' engl. non-capturing '''
| |
| Die Syntax lautet in den meisten Implementierungen <tt>'''(?:</tt>…<tt>)'''</tt>.
| |
| | |
| Regular expressionp-Dokumentationen weisen darauf hin, dass die Erzeugung von Rückwärtsreferenzen stets vermieden werden soll, wenn kein späterer Zugriff auf sie erfolge.
| |
| | |
| Denn die Erzeugung der Referenzen kostet Ausführungszeit und belegt Platz zur Speicherung der gefundenen Übereinstimmung.
| |
| | |
| Zudem lassen die Implementationen nur eine begrenzte Anzahl an Rückwärtsreferenzen zu (häufig nur maximal 9).
| |
| | |
| ==== Beispiel ====
| |
| \d+(?:-\d+)*
| |
| * Findet Folgen von durch Bindestriche getrennte Zahlenfolgen, ohne dabei die letzte durch einen Bindestrich getrennte Zahlenfolge als Rückreferenz zu erhalten.
| |
| | |
| == Suchen & Ersetzen ==
| |
| Beim reinen s-Befehl werden immer alle Zeilen ausgegeben, unabhängig davon, ob Ersetzungen durchgeführt wurden oder nicht. Dies lässt sich ändern, indem man ihn mit dem p-Befehl kombiniert. Die Abläufe sind wie folgt:
| |
| | |
| '''p-Befehl'''
| |
| | |
| '''echo "dies wird nicht ausgegeben" | sed -n '/.*diiss.*/p''''
| |
| # gibt es eine Ergebnismenge, die zur RE "passt"?
| |
| # wenn ja, gibt die ganze Zeile aus.
| |
| | |
| '''s-Befehl ohne p-Befehl'''
| |
| | |
| '''echo "dies wird ausgegeben" | sed 's/wird/wird immer/''''
| |
| # gibt es eine Ergebnismenge, die zur RE "passt"?
| |
| # wenn ja, welches ist die effektive Ergebnismenge?
| |
| # ersetze diese durch den Replace-String
| |
| # gib die ganze Zeile aus (egal, ob geändert oder nicht)
| |
| | |
| '''s-Befehl mit p-Befehl'''
| |
| | |
| '''echo -e "xxx\nnächste Zeile" | sed -n 's/xxx/Ausgabe/p''''
| |
| # Die Kombination von s- und p-Befehl bewirkt, dass
| |
| # nur die geänderten Zeilen ausgegeben werden.
| |
| # Die Option -n darf nicht vergessen werden.
| |
| | |
| Im Allgemeinen ist es sinnvoll, den g-Spezifizierer ("global") zu verwenden, der direkt vor oder hinter dem p-Befehl steht:
| |
| | |
| '''echo -e "xxx--xxx\nnächste Zeile" | sed -n 's/xxx/Ausgabe/pg''''
| |
| # alle "xxx" werden ersetzt
| |
| | |
| === Ersatzmuster ===
| |
| Bei einigen Tools (ex, sed und ed) werden zwei Muster angegeben: Ein Suchmuster (links) und ein Ersatzmuster (rechts). Nur die folgenden Zeichen sind in einem Ersatzmuster gültig:
| |
| | |
| {| class="wikitable sortable"
| |
| |-
| |
| | |
| |
| | | '''ex'''
| |
| | | '''sed'''
| |
| | | '''Ed'''
| |
| | |
| |
| |-
| |
| | | <tt>'''\'''</tt>
| |
| | | X
| |
| | | X
| |
| | | X
| |
| | | Sonderbedeutung des nächsten Zeichens aufhebe
| |
| |-
| |
| | | <tt>'''\n'''</tt>
| |
| | | X
| |
| | | X
| |
| | | X
| |
| | | Verwendet das in \( \) gespeicherte Muster erneut
| |
| |-
| |
| | | <tt>'''&'''</tt>
| |
| | | X
| |
| | | X
| |
| | |
| |
| | | Verwendet das vorherige Suchmuster erneut
| |
| |-
| |
| | | <tt>'''~'''</tt>
| |
| | | X
| |
| | |
| |
| | |
| |
| | | Verwendet das vorherige Ersatzmuster erneut
| |
| |-
| |
| | | <tt>'''\u'''</tt>
| |
| | | X
| |
| | |
| |
| | |
| |
| | | Ändert das erste Zeichen des Ersatzmusters auf Großschreibung
| |
| |-
| |
| | | <tt>'''\U'''</tt>
| |
| | | X
| |
| | |
| |
| | |
| |
| | | Ändert alle Zeichen des Ersatzmusters auf Großschreibung
| |
| |-
| |
| | | <tt>'''\l'''</tt>
| |
| | | X
| |
| | |
| |
| | |
| |
| | | Ändert das erste Zeichen des Ersatzmusters auf Kleinschreibung
| |
| |-
| |
| | | <tt>'''\L'''</tt>
| |
| | | X
| |
| | |
| |
| | |
| |
| | | Ändert alle Zeichen des Ersatzmusters auf Kleinschreibung
| |
| |-
| |
| | | <tt>'''\E'''</tt>
| |
| | | X
| |
| | |
| |
| | |
| |
| | | Hebt das vorangegangene \U oder \L auf
| |
| |-
| |
| | | <tt>'''\e'''</tt>
| |
| | | X
| |
| | |
| |
| | |
| |
| | | Hebt das vorangegangene \u oder \l auf
| |
| | |
| |-
| |
| |}
| |
| == Verknüpfungen ==
| |
| ; Verknüpfung regulärer Ausdrücken
| |
| Mehrere reguläre Ausdrücke können durch Aneinanderfügen zusammengeführt werden. Ein solcher Ausdruck findet dann alle Zeichenketten, die aneinander gehängt zu dem jeweiligen Ausdruck passen.
| |
| | |
| ''' Beispiel '''
| |
| "[Aa]lpha"
| |
| | |
| Es besteht aus den einzelnen Bausteinen
| |
| * "<tt>[Aa]</tt>"
| |
| * "<tt>l</tt>"
| |
| * "<tt>p</tt>"
| |
| * "<tt>h</tt>"
| |
| * "<tt>a</tt>"
| |
| | |
| === Verknüpfung durch "oder" ===
| |
| Durch den Operator "<tt>|</tt>" lassen sich reguläre Ausdrücke mit einem "oder" verknüpfen.
| |
| | |
| Der daraus entstehende Ausdruck findet Zeichenketten, die entweder auf den einen oder den anderen Ausdruck passen.
| |
| | |
| ''' Beispiel '''
| |
| | |
| "[Aa]lpha|[Bb]ravo"
| |
| * findet alle Textstücke "Alpha", "alpha", "Bravo" und "bravo"
| |
| * <tt>grep -E</tt> oder <tt>egrep</tt>
| |
| | |
| echo "--rot--gelb--" | sed 's/\(gelb\|rot\)/x/g'
| |
| echo "--rot--gelb--" | sed 's/gelb\|rot/x/g'
| |
| | |
| * die runden Klammern und das oder-Zeichen "|" müssen escaped werden
| |
| * die runden Klammern können weggelassen werden
| |
| | |
| ==== Alternativen ====
| |
| Man kann alternative Ausdrücke mit dem „<tt>'''|'''</tt>“-Symbol zulassen.
| |
| | |
| „ABC|abc“ bedeutet „ABC“ oder „abc“, aber z. B. nicht „Abc“.
| |
| | |
| ==== Beispiele ====
| |
| a|b* * "a", "b", "bb", "bbb", …
| |
| | |
| (a|b)*
| |
| * beliebig viele „a“ und „b“, einschließlich einer leeren Zeichenkette
| |
| * „“, „a“, „b“, „aa“, „ab“, „ba“, „bb“, „aaa“, …
| |
| | |
| ab*(c|ε)
| |
| * ε = leer
| |
| * Zeichenketten beginnend mit „a“
| |
| * kein- oder mehrmals „b“
| |
| * optional a "c": {"a", "ac", "ab", "abc", "abb", "abbc", ...}
| |
| | |
| (0|(1(01*0)*1))*
| |
| * set of binary numbers that are multiples of 3: { ε, "0", "00", "11", "000", "011", "110", "0000", "0011", "0110", "1001", "1100", "1111", "00000", ... }
| |
| | |
| === Rangfolge ===
| |
| ; Rangfolge der Regeln
| |
| Ähnlich wie bei mathematischen Ausdrücken (Punkt- vor Strichrechnung) unterliegen die Verknüpfungsoperatoren einer Rangfolge:
| |
| * Wiederholungen kommen vor Verkettungen
| |
| * Verkettungen vor "oder"
| |
| * Diese Regeln lassen sich durch Klammern überschreiben
| |
|
| |
|
| <noinclude> | | <noinclude> |
Zeile 376: |
Zeile 75: |
| === Siehe auch === | | === Siehe auch === |
| {{Special:PrefixIndex/{{BASEPAGENAME}}}} | | {{Special:PrefixIndex/{{BASEPAGENAME}}}} |
| | |
| ==== Links ==== | | ==== Links ==== |
| ===== Weblinks ===== | | ===== Weblinks ===== |
|
| |
|
| [[Kategorie:RegEx]] | | [[Kategorie:Regular Expression]] |
| | |
| </noinclude> | | </noinclude> |