Regulärer Ausdruck: Unterschied zwischen den Versionen

Aus KGS-Wiki
(Artikel angelegt)
 
(Beispiele erweitert und erläutert)
Zeile 25: Zeile 25:
|ein Buchstabe von <code>k</code> bis <code>r</code>
|ein Buchstabe von <code>k</code> bis <code>r</code>
|<code>l</code>, <code>o</code>, <code>q</code>
|<code>l</code>, <code>o</code>, <code>q</code>
|-
|<code>[A-Za-z]</code>
|ein Groß- oder ein Kleinbuchstabe
|<code>D</code>, <code>z</code>, <code>P</code>
|-
|-
|<code>[^abcde]</code>
|<code>[^abcde]</code>
|weder <code>a</code>, <code>b</code>, <code>c</code>, <code>d</code> noch <code>e</code>
|alles außer <code>a</code>, <code>b</code>, <code>c</code>, <code>d</code> und <code>e</code>
|<code>g</code>, <code>6</code>, <code>!</code>
|<code>g</code>, <code>6</code>, <code>!</code>
|-
|-
|<code>a*</code>
|<code>a*</code>
|beliebig viele <code>a</code> (auch keines)
|beliebig viele <code>a</code> (auch keines!)
|<code>aaaaaa</code>, , <code>a</code>
|<code>aaaaaa</code>, , <code>a</code>
|-
|-
|<code>a+</code>
|<code>a+</code>
|beliebig viele <code>a</code> (mindestens eines)
|beliebig viele <code>a</code> (mindestens eines!) – entspricht <code>aa*</code>
|<code>a</code>, <code>aaa</code>, <code>aaaaaaa</code>
|<code>a</code>, <code>aaa</code>, <code>aaaaaaa</code>
|-
|-
Zeile 65: Zeile 69:
|<code>def</code> am Ende der Zeile
|<code>def</code> am Ende der Zeile
|
|
|-
|<code>.</code>
|ein beliebiges Zeichen
|<code>z</code>, <code>7</code>, <code>§</code>
|-
|-
|<code>\?</code>, <code>\.</code>, <code>\*</code>, <code>\[</code>, <code>\]</code> usw.
|<code>\?</code>, <code>\.</code>, <code>\*</code>, <code>\[</code>, <code>\]</code> usw.
|Diese Zeichen haben eine Funktion. Um nach den Zeichen selbst suchen zu können, muss der <code>\</code> davorgesetzt werden.
|Diese Zeichen haben eine Funktion. Um nach den Zeichen selbst suchen zu können, muss der <code>\</code> davorgesetzt werden.
|
|
|-
|<code>.</code>
|ein beliebiges Zeichen
|<code>z</code>, <code>7</code>, <code>§</code>
|}
|}


== Beispiele ==
== Beispiele ==


* <code>[A-ZÄÖÜ]{1,3}-[A-Z]{1,2} [0-9]{1,4}[HE]?</code> für Autokennzeichen wie <code>NMS-KG 123</code> oder <code>PLÖ-RX 42E</code>
=== Autokennzeichen ===
* <code>numbers\[[0-9]+\] = [0-9]*;</code> für Wertzuweisungen für Einträge in der Liste <code>numbers</code>
<syntaxhighlight>
[A-ZÄÖÜ]{1,3}-[A-Z]{1,2} [0-9]{1,4}[HE]?
</syntaxhighlight>
{| class="wikitable"
|+lies:
!Teil
!Erläuterung
!Beispiele
|-
|<code>[A-ZÄÖÜ]{1,3}</code>
|Ein bis drei Großbuchstaben inkl. Umlaute
|<code>NMS</code>, <code>RD</code>, <code>KI</code>, <code>PLÖ</code>
|-
|<code>-</code>
|Ein Bindestrich
|<code>-</code>
|-
|<code>[A-Z]{1,2}</code>
|Ein bis zwei Großbuchstaben ohne Umlaute
|<code>EL</code>, <code>WI</code>, <code>TK</code>, <code>P</code>
|-
|
|Ein Leerzeichen
|
|-
|<code>[0-9]{1,4}</code>
|Eine bis vier Ziffern
|<code>1313</code>, <code>1921</code>, <code>480</code>
|-
|<code>[HE]?</code>
|Ein <code>H</code> (für Oldtimer), ein <code>E</code> (für Elektro-Autos) oder gar nichts
|<code>H</code>, <code>E</code>,
|}
Beispiele für das Gesamtergebnis: <code>NMS-KG 123</code> oder <code>PLÖ-RX 42E</code>
 
=== Dateinamen von Bilddateien ===
<syntaxhighlight>
.+\.(jpe?g|png|gif)
</syntaxhighlight>
{| class="wikitable"
|+lies:
!Teil
!Erläuterung
!Beispiele
|-
|<code>.+</code>
|beliebig viele beliebige Zeichen
|<code>Shruggie</code>, <code>BlueJ Objektinspektor</code>
|-
|<code>\.</code>
|Ein Punkt. Beachte: <code>.</code> ist ''irgendein'' Zeichen, <code>\.</code> ist ''nur'' der Punkt
|<code>.</code>
|-
|<code><nowiki>(jpe?g|png|gif)</nowiki></code>
|Entweder <code>jpg</code>, <code>jpeg</code>, <code>png</code> oder <code>gif</code>
|<code>jpg</code>, <code>jpeg</code>, <code>png</code>, <code>gif</code>
|}
Beispiele für das Gesamtergebnis: <code>[[:Datei:Shruggie.jpeg|Shruggie.jpeg]]</code>, <code>[[:Datei:BlueJ Objektinspektor.png|BlueJ Objektinspektor.png]]</code>


== Zum Weiterlesen ==
== Zum Weiterlesen ==

Version vom 12. September 2023, 05:48 Uhr

Ein regulärer Ausdruck ist eine Möglichkeit, Wörter formaler Sprachen zu beschreiben. Anders als eine formale Grammatik beschreibt ein regulärer Ausdruck dabei nur die Syntax eines Wortes und kann nichts über dessen Semantik aussagen. Mit regulären Ausdrücken können nicht alle Sprachen beschrieben werden, die mit einer formalen Grammatik beschrieben werden können.

Der wichtigste Unterschied zu einer formalen Grammatik ist: eine formale Grammatik gibt Regeln zum Erzeugen eines Wortes an, ein regulärer Ausdruck dient nur der Überprüfung. Ob ein Wort einem regulären Ausdruck entspricht, kann dabei wesentlich schneller überprüft werden, als ob das Wort den Regeln einer Grammatik entspricht.

Syntaxelemente

Die wichtigsten Syntaxelemente von regulären Ausdrücken
Schreibweise Bedeutung Beispielwörter
(abc|def) abc oder def abc, def
[abcde] a, b, c, d oder e a, b, e
[0-9] eine Ziffer von 0 bis 9 1, 5, 8
[k-r] ein Buchstabe von k bis r l, o, q
[A-Za-z] ein Groß- oder ein Kleinbuchstabe D, z, P
[^abcde] alles außer a, b, c, d und e g, 6, !
a* beliebig viele a (auch keines!) aaaaaa, , a
a+ beliebig viele a (mindestens eines!) – entspricht aa* a, aaa, aaaaaaa
abc* ab und dann beliebig viele c ab, abccc, abccccc
(abc)* beliebig viele abc abc, abcabcabc,
def? de und dann ein f oder nicht de, def
[a-z]{5} fünf Kleinbuchstaben hallo, alles, roger
a{4,7} mindestens 4 und höchstens 7 a aaaa, aaaaa, aaaaaaa
^abc abc am Anfang der Zeile
def$ def am Ende der Zeile
. ein beliebiges Zeichen z, 7, §
\?, \., \*, \[, \] usw. Diese Zeichen haben eine Funktion. Um nach den Zeichen selbst suchen zu können, muss der \ davorgesetzt werden.

Beispiele

Autokennzeichen

[A-ZÄÖÜ]{1,3}-[A-Z]{1,2} [0-9]{1,4}[HE]?
lies:
Teil Erläuterung Beispiele
[A-ZÄÖÜ]{1,3} Ein bis drei Großbuchstaben inkl. Umlaute NMS, RD, KI, PLÖ
- Ein Bindestrich -
[A-Z]{1,2} Ein bis zwei Großbuchstaben ohne Umlaute EL, WI, TK, P
Ein Leerzeichen
[0-9]{1,4} Eine bis vier Ziffern 1313, 1921, 480
[HE]? Ein H (für Oldtimer), ein E (für Elektro-Autos) oder gar nichts H, E,

Beispiele für das Gesamtergebnis: NMS-KG 123 oder PLÖ-RX 42E

Dateinamen von Bilddateien

.+\.(jpe?g|png|gif)
lies:
Teil Erläuterung Beispiele
.+ beliebig viele beliebige Zeichen Shruggie, BlueJ Objektinspektor
\. Ein Punkt. Beachte: . ist irgendein Zeichen, \. ist nur der Punkt .
(jpe?g|png|gif) Entweder jpg, jpeg, png oder gif jpg, jpeg, png, gif

Beispiele für das Gesamtergebnis: Shruggie.jpeg, BlueJ Objektinspektor.png

Zum Weiterlesen