Regulärer Ausdruck: Unterschied zwischen den Versionen
Sn (Diskussion | Beiträge) (Artikel angelegt) |
Sn (Diskussion | Beiträge) (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> | ||
| | |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. | ||
| | | | ||
|} | |} | ||
== Beispiele == | == Beispiele == | ||
=== Autokennzeichen === | |||
<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
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]?
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)
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