Take the 2-minute tour ×
German Language Stack Exchange is a question and answer site for speakers of German wanting to discuss the finer points of the language and translation. It's 100% free, no registration required.

Beim Programmieren bekommt man es früher oder später mit regular expressions, auf Deutsch regulären Ausdrücken zu tun.

Gemeint ist damit etwas derartiges:

^(((+|00)49)|0)?([-/ ])?30([-/ ])?[0-9]{8}$

Das wäre eine Telefonnummer in verchiedenen, ähnlichen Notationsformen. Mögliche Schreibweisen, die von dem Ausdruck oben erfasst werden, wären

  • +49 30 78901234
  • 0049-30-78901234
  • 030-78901234

Der Ausdruck beschreibt also selbst ein Regelwerk, gegen das Zeichenfolgen geprüft werden können.

Der Begriff regulärer Ausdruck stößt mir dabei immer auf. Das besondere an diesen Ausdrücken ist doch, dass sie selbst eine Regel formulieren, die andere Ausdrücke erfüllen müssen.

Der Name klingt aber so, als müssten die Ausdrücke selbst Regeln erfüllen - was zu einem kleinen Grad auch nicht falsch ist, aber das besondere ist doch, dass sie Regeln definieren.

Habe ich den Begriff falsch verstanden, und mit "regulär" ist etwas anderes gemeint? Beim Fußball bezeichnet ein regulärer Elfmeter einen Strafstoß, von dem der Sprecher meint, dass es ein gemäß den Regeln ausgeführter Strafstoß ist.

Wäre der Begriff regelbildender Ausdruck nicht besser?

share|improve this question

3 Answers 3

up vote 3 down vote accepted

"Regulärer Ausdruck" ist ein Fach-Begriff aus der Computerlinguistik. Mit diesen Ausdrücken kann man reguläre Sprachen definieren.

Jeder reguläre Ausdruck definiert eine eigene Sprache, die ihrerseits zur Menge der regulären Sprachen gehört. Das sind Sprachen, die nach der Definition von Noam Chomsky eine Typ-3-Grammatik aufweisen. (Google und Wikipedia erklären dir gerne die Details)

In einem Computerprogramm willst du manchmal von einer Zeichenkette wissen, ob sie bestimmte Eigenschaften hat (Ist das eine E-Mail-Adresse?, ist das eine Telefonnummer? ...). Ein einfacher Weg das zu prüfen besteht darin, eine reguläre Sprache zu definieren, die ausschließlich "Wörter" enthält, die E-Mail-Adressen oder Telefonnummern sind. Ein regulärer Ausdruck ist nun ein Ausdruck, der eine reguläre Sprache vollständig beschreibt, und das Programm, das diesen Ausdruck verwendet, prüft dann einfach nur nach, ob die Zeichenkette ein Wort ist, das in dieser Sprache vorkommt. Aufgrund der besonderen Grammatik regulärer Sprachen geht das relativ schnell.

share|improve this answer
1  
Gute Beschreibung, was ein regulärer Ausdruck ist, der aber leider nicht auf die Frage (warum sie so heißen) eingeht. –  mthomas Aug 24 '12 at 15:59
2  
Doch, das ist die Antwort auf die gestellte Frage. Reguläre Ausdrücke heißen so, weil die reguläre Sprachen definieren. Und reguläre Sprachen haben ihren Namen daher, dass die vollständig durch Regeln (nämlich genau den regulären Ausdrücken) beschreibbar sind. Das Wort "regulär" bedeutet hier nicht "gängig" oder "legitim", sondern "gemäß einer Regel" oder "Regeln folgend" –  Hubert Schölnast Aug 25 '12 at 10:44
    
@HubertSchölnast: Deine Kommentar entspicht am ehesten dem, was ich als Antwort erhofft habe. Als Antwort hätte er Chancen ... :) –  user unknown Aug 29 '12 at 2:34

Reguläre Ausdrücke heissen so, weil sie verwendet werden können um Reguläre Sprachen zu beschreiben und entsprechend auch zu parsen.

Der Begriff des regulären Ausdrucks geht im Wesentlichen auf den Mathematiker Stephen Kleene zurück. Er benutzte eine fast identische Notation, welche er reguläre Mengen ("regular sets") nannte.

share|improve this answer
    
Ich bin dem Link gefolgt, und finde dann des weiteren "reguläre Grammatik" - nur ist das ganze ein wenig zyklisch. Das "regulär" wird vom einen zum anderen weiter gegeben, und am Ende ist man wieder bei regulären Ausdrücken. –  user unknown Aug 29 '12 at 2:30

Im Umfeld von Programmiersprachen und Datenbanken dienen reguläre Ausdrücke dazu, diese als eine komplexere Form der Musterbeschreibung von einer einfacheren, die nur Wildcards (auf schlecht deutsch Platzhalter oder Jokerzeichen) kennt, zu unterscheiden.

Ein gegebener Text kann mit dem gleichen Muster auf verschiedene Arten verglichen werden.

Der reguläre Ausdruck 'A*' passt etwas auf

''
'A'
'AA'
'AAA'
...

Fass man 'A*' als Muster mit Wildcards, auf, wie etwa bei Dateinamen. Dann steht er für

'A'
'AA'
'AB'
'A und alles was sonst noch mit A anfängt'
...

Regulär ist hier also nicht als Eigenschaft des als Muster verwendetem Ausdrucks zu verstehen, sondern es bezieht sich auf die Art der Auswertung, bei Vergleichen zwischen einem Muster und einem Ausdruck.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.