Kategorie: Programmierung

Codierung

Ein Zeichen bezieht sich auf die Technik in der digitalen Technologie verwendet, um Zeichen von unterschiedlichen Kontexten zu behandeln – typischste Sprache Kontexten.

Einführung

In der digitalen Technik sind Zeichendaten des Menschen. Die Präsentation, in gedruckter Form oder auf einem Bildschirm erfordert eine digitale Schriftart. In der Schrift, jedes Zeichen nummeriert, so dass es einfach ist , … aber es stellt sich heraus , dass es tatsächlich erstaunlich viele Beweise zu prüfen. Hier der Zeichensatz ist die Standardtechnik im Einsatz zwischen dem, was zu unterscheiden in Englisch heißt Zeichensatz – dh eine relativ große Anzahl von verschiedenen Charakteren, zum Beispiel, 256, zusammen gruppiert. Im übrigen ist es die englische Bezeichnung für die Codierverfahren Englisch : Zeichencodierung . Ein digitaler Font einen bestimmten auszuführen ausgelegt Zeichensatz oder gegebenenfalls spezifischer seinen Zeichensatz . Die technischen Richtlinien für die Verwendung eines digitalen Schrift umfassen daher Formalismus – Zeichencodierung oder Zeichensatz – die deutlich zeigt , welche Zeichen Zahlen die Schriftart enthält, und in der Tat einzigartig zeigt , welche Zeichen der Benutzer kann unter dieser Nummer (erwartet im Jahr 1985 von Adobe , p. 91).

Format

Die Buchstaben sind vielleicht die am häufigsten verwendeten Zeichen sie Buchstaben bezeichnet. Außerdem Zahlen , Ziffern bezeichnet. Die Kombination aus Buchstaben und Zahlen genannt alphanumerische Zeichen .

Es war der erste digitale Zeichensatz, der von mindestens sechs bestand aus Bits , so dass 64 Zeichen Möglichkeiten – für Buchstaben, Zahlen und andere Zeichen. Später wurde auf 7 Bit oder 128 – Varianten erhöht, so dass sowohl Groß- und Kleinbuchstaben waren möglich. Schließlich sollte auch Raum für Sonderzeichen und Symbole des jeweiligen Landes sein, wie elektronische Post alltäglich geworden ist , und erhöht sie dann auf 8 Bit oder 256 Zeichen.

Es reicht nicht aus, wenn die allen Sprachen der Welt in ein und derselben internationalen Zeichensätzen (dh integriert werden Zeichencodierung ). In Unicode sind Datenzeichenformate von bis zu den gesamten 32-Bits, während die weit verbreiteten Unicode Transformation Format-8 ( UTF-8 ) , die eine variable Anzahl von Bits hat (8,16,24,32) ( Unicode 2014 ). Unicode ist ein fortøbende und sehr lange Reihe von Zahlen auf diese Weise unter einem bestimmten umfassen Chinesisch , Japanisch , Latein und Kyrillisch Alphabete, Koptisch , Gothic , Keilschrift , Ogham und Runic Alphabet und sogar Anzeichen von einigen künstlichen Sprachen wie einfallsreiche Sprache Klingonisch.

Beispiele für Zeichensätze:

  • 6-Bit – Fieldata von Univac
  • 7-Bit- und 8-Bit – amerikanischer Standard Code for Information Interchange ( ASCII )
  • 8-Bit – EBCDIC IBM der ursprüngliche Zeichensatz
  • Unicode in verschiedenen Formaten einschließlich UTF-8 , die in einem gemeinsam ist GNU / Linux – System (Bit – Nummer: 8,16,24,32) und UTF-16 (Anzahl der Bits: 16,32) auch bekannt von Microsoft Windows .

Mehr über PC ‚einheitlichen Umgang mit digitalen Daten.

Externe Links

  • Unicode FAQ
  • ein: Liste der ISO 15924-Codes von Buchstaben-Code

Quellen

  • Adobe Systems Incorporated (1985), „9.2 – Zeichencodierung“ PostScript- Tutorial und Kochbuch (PDF) , Addison-Wesley
  • „UTF-8, UTF-16, UTF-32 & BOM“ , Unicode FAQ , Unicode inc., 2014

UTF-8

UTF-8 ( U Nicodé T ransformation F ormat 8 – Bit ) ist eine verlustfreie Codierung von Unicode – Zeichensatz . Es wurde entwickelt von Ken Thompson und Rob Pike des 2. September betragen 1992 in New Jersey , USA .

UTF-8 verwendet Gruppen von 8-Bit – Bytes für die weltweit viele den Unicode – Standard darstellen Alphabete . UTF-8 ist besonders nützlich beim Transport von E-Mail in den 8-Bit – Eingabesystemen.

Der Benutzer 1-6 Bytes (oder 8 bis 48 Bits) pro Zeichen – in Abhängigkeit von dem Unicode – Symbol. Zum Beispiel erfordert nur ein Byte alle 128 zu codieren ASCII – Zeichen im Unicode – Bereich U + 0000 bis U + 007F.

UTF-8 ist in der RFC 3629 ( 2003 ) wird auf 4-Byte – Sequenzen beschränkt, da dies ausreicht , um den gesamten Unicode Bereich von 0000 bis U + U + 10FFFF zu kodieren.

Encoding

Zeichen im Bereich von 0000 bis U + U + 007F, die 7-Bit-ASCII unverändert codiert werden. Andere Zeichen werden unter Verwendung von 2 bis 4 Bytes codiert, die alle größer als 7F.

Unicode – Bereich
hexadezimal
Bit – Wert
binär
UTF-8
binäre
Aufzeichnungen
000000-00007F
128 Zeichen
0zzzzzzz 0zzzzzzz 7-Bit-ASCII-Feld; Byte beginnt mit einem 0-Bit
sieben z sieben z
000080-0007FF
1920 Zeichen
00000yyy yyzzzzzz 110yyyyy 10zzzzzz Erstes Byte beginnt mit 110, beginnt das nächste Byte mit 10.
drei Y; bis y, z sechs fünf Y; sechs z
000800-00FFFF
63.488 Zeichen
xxxxyyyy yyzzzzzz 1110xxxx 10yyyyyy 10zzzzzz Beginnt mit dem ersten Byte 1110 beginnen die nachfolgenden Bytes mit dem 10.
vier x, y vier; bis y, z sechs vier x; sechs y; sechs z
010000-1FFFFF
2.031.616 Zeichen
000vvvxx xxxxyyyy yyzzzzzz 11110vvv 10xxxxxx 10yyyyyy 10zzzzzz Erstes Byte beginnt mit 11110, die nachfolgenden Bytes mit dem 10. Anfang
v drei, zwei x; vier x, y vier; bis y, z sechs drei V; sechs x; sechs y; sechs z
00200000-03FFFFFF
65.011.712 Zeichen
000000uu vvvvvvxx xxxxyyyy yyzzzzzz 111110uu 10vvvvvv 10xxxxxx 10yyyyyy 10zzzzzz Erstes Byte beginnt mit 111.110, das nachfolgenden Bytes mit dem 10. Anfang
zu u, v sechs, zwei x; vier x, y vier; bis y, z sechs zu u, v sechs; sechs x; sechs y; sechs z
04000000-7FFFFFFF
1073741824 Zeichen
0tuuuuuu vvvvvvxx xxxxyyyy yyzzzzzz 1111110t 10uuuuuu 10vvvvvv 10xxxxxx 10yyyyyy 10zzzzzz Beginnt mit dem ersten Byte 1111110, beginnend nachfolgendes Bytes mit dem 10.
a t, u sechs, sechs V, zwei x; vier x, y vier; bis y, z sechs a t, u sechs, sechs V; sechs x; sechs y; sechs z

Da Unicode zu U + 10FFFF begrenzt stoppt den Standard ( RFC 3629 ) in dem Tag durch die vier Byte – Sequenzen, obwohl längere Sequenzen zuvor definiert worden sind.

Die folgenden Byte-Werte können nicht in einer UTF-8-Zeichenfolge auftreten, nach der Norm

Wert ( binär ) Wert ( hexadezimal ) Aufzeichnungen
1100000x C 0, C 1 -C Falsche Kodierung von Werten von weniger als 7F. Byte, die den Beginn einer 2-Byte-Sequenz, aber der Wert ist kleiner als 7F.
1111111x FE, FF Illegal: das Startbyte für eine 7/8 Bytesequenz.
111110xx
1111110x
F8, F9, FA, FB, FC, FD Entfernt von RFC 3629 : Ausgang Byte für eine 5/6 Bytesequenz.
11110101
1111011x
F5, F6, F7 Entfernt von RFC 3629 : Byte – Werte zwischen 10FFFF und 1FFFFF starten.

Vorteile und Nachteile

allgemeine Vorteile

  • UTF-8 ist eine echte Erweiterung des ASCII-Standard, was bedeutet, dass ein ASCII-Text nicht konvertiert werden kann, sondern auch ein UTF-8-Text.
  • Es ist relativ einfach , einen UTF-8 – Text zu identifizieren. Die Wahrscheinlichkeit eines Textes in einem anderen 8-Bit – Standard codiert (z. B. ISO 8859 ) ist verwirrt mit einer UTF-8 – String recht klein ist.

allgemeine Nachteile

  • Eine schlechte Implementierung kann illegal Codierungen akzeptieren und wandeln sie den gleichen Unicode-Text richtig zu codieren und somit Strings in anderen Codierungen verzerren.

Vorteile im Vergleich zu UTF-16

  • Bytes mit dem Wert 0 wird nur in einem UTF-8-Text auftreten, wenn das Unicode-Zeichen U + 0000 codiert ist. Dies ist vorteilhaft bei Anwendungen, die einen 0-Byte-String als Terminator verwendet werden.
  • Texte in erster Linie in ASCII geschrieben (z. Normale westeuropäische Texte) werden ca. halb so groß wie in UTF-8, da die meisten Zeichen können in einem Byte an zwei in UTF-16 codiert werden,

Nachteile im Vergleich zu dem UTF-16

  • Texte, die Zeichen größer als U + 0800, zum Beispiel verwendet. Chinesische und japanische Texte werden bis zu einem halben mal mehr in UTF-8 sein. Dies wird teilweise durch den Zwischenraum, Zeichen, Wagenrücklauf widersteht und dergleichen können in einem Byte in UTF-8 codiert werden.

UTF-16

UTF-16 ( U Nicodé T ransformation F ormat 16 – Bit ) ist eine verlustfreie Codierung mit variabler Länge von Zeichen von Unicode – Zeichensatz .

UTF-16 alle unicodepositioner kann durch 2 oder 4 dargestellt werden Bytes . Die untersten Positionen 256 entsprechen die Buchstaben in ISO 8859-1 , mit nur zwei Bytes, wobei ISO 8859-1 kann mit je 1 Byte dargestellt werden. unterzeichnen.

Die häufigsten Anzeichen sind in Unicode in der Lage Basic Multilingual Plane , mit Werten von U + 0000 bis U + FFFF. Diese 65.536 Zeichen sind alle durch 2 Bytes dargestellt. Die andere Ebene 16 in Unicode ist mit 4 Bytes dargestellt.

lossless Codierung

Lossless Codierung von Daten bedeutet , dass es Informationen sind verloren während Codierung so , daß die ursprünglichen Daten können durch eine nachfolgende ohne Modifikation gewonnen werden Decodierung .

Ein triviales Beispiel einer nicht-lossless Codierung ist das dänische Alphabet codierte mit ASCII – Zeichensatz :

„Die h oe vorhanden Rohr oe s“

Sind die Rohre oder Wurzelgemüse? Nur die erste Insel als zu lesen Insel .

Ein Beispiel für eine Codierung lossless Codierung ist UTF-8

Mono (Software)

Mono ist eine Open – Source – Ansätze, eine freie Entwicklungsumgebung erstellen .NET – Entwicklerdie bei der Wahl des Betriebssystems für ansonsten beschränkt sind Microsoft Windows . Mono ist als Multi-PlattformAnwendung entwickelt und läuft auf verschiedenen UnixVarianten, einschließlich Linux , Solaris und Mac OS X . Mono werden durch subventionierte Novell . Microsoft hat verbrachte Ecma – Standards zu entwickeln für .NET und Mono fürvollständige Einhaltung Ziel. Viele .NET – Entwickler betrachten viele der Ressourcen Microsoft als Teil des .NET FrameworkVerfügung stellt, und diese Eigenschaften wahrscheinlich Mono kann nie implementieren, und daher wird es Unterschiede zwischen den beiden Entwicklungsumgebungen sein, später Abschnitt.

Mono ist nicht auf eine bestimmte Anzahl von Programmiersprachen beschränkt. Stattdessen ist es möglich , einen Übersetzer von jeder Sprache zu entwerfen , ein CLI und passen sie in Mono – Umgebung. Auf diese Weise ist es möglich , .NET – Anwendungen in der Entwicklung ein . Mono unterstützt eine größere Menge von Programmiersprachen (siehe Liste unten).

Unterschiede in Entwicklungsumgebungen

Die Standardisierung von ECMA bereits in dem Prozess hat dazu beigetragen, die Unterschiede zwischen Mono Project und Microsoft .NET zu minimieren. Microsoft hat sich dafür entschieden, ihre .NET mit einem inneren Weg zu binden GUI-Anwendungen zu entwerfen, die so genannte Windows.Forms. Mono hat stattdessen zu binden, ihre Umgebung mit GTK ausgewählt. GTK und Windows.Forms sind nicht kompatibel.

Einige Teile des Mono-Entwicklungsteam ist in dem Prozess der Entwicklung, die Mono mit Window.Forms kompatibel machen sollte, aber da Window.Forms gebunden eng mit dem zugrunde liegender Windows-Funktionalität ist nicht sicher, es möglich ist, das Verhalten zu emulieren.

Programmiersprachen

Mono ist, wie bereits erwähnt, nicht auf eine feste Anzahl von Programmiersprachen gebunden, sondern kann jeden Übersetzer unterstützen, die auf die CLI übersetzt. Hier finden Sie eine Liste der nuværerende unterstützten Sprachen:

  • C #
  • Java
  • buh
  • Nemerle
  • Visual Basic.NET
  • Python
  • Javascript
  • Oberon
  • PHP
  • Object Pascal
  • LSL

GCC

GCC ist ein vielseitiger Compiler in entwickelten GNU – Projekt. Ursprünglich GCC Akronym für GNU C Compiler, aber da gibt es Unterstützung für mehrere hinzugefügt wurde Programmiersprachen , war die Abkürzung als der GNU Compiler Collection bezeichnet. Es ist möglich , verschiedene Dialekte von C und zu übersetzen , C ++ . Darüber hinaus Ada , Fortran und Java übersetzt.

GCC behandelt nicht nur die Übersetzung selbst, sondern auch sicherstellen , dass zur Aktivierung des Assembler und Linker , so ist das Endprodukt ein fertiges Programm. Diese Optionen können ausgewählt werden, das ist ein Vorteil , wenn GCC verwendet wird , machen .

Klirren

Clang [2] ist ein Compiler vorderes Ende der Programmiersprachen C , C ++ , Objective-C und Objective-C ++ . Clang nutzt LLVM als Back – End und ist ein Teil von LLVM seit LLVM 2.6 worden.

Clangs Ziel ist es, eine Alternative zu dem anzubieten GNU Compiler Collection (GCC). Die Entwicklung ist Open – Source – [3] , mit mehreren großen Entwicklungsunternehmen (z. B. Google , Apple – ) , die beteiligt. Clang steht unter der verfügbar University of Illinois / NCSA Lizenz .

Clang Projekt umfasst CLANG vorderes Ende und Clang statischen Analysator . [4]

Hintergrund

Seit 2005 verwendet Apple – LLVM stärker in mehreren kommerziellen Systemen, [5] , einschließlich der iPhone – Development – Kit und Xcode 3.1.

Siehe auch

  • C (Programmiersprache)
  • LLDB
  • GCC

Quellen / Referenzen

  1. Aufspringen^ „LLVM Lizenz freigeben“
  2. Aufspringen^ Christopher, Eric (3. Juli 2008). „Fragen sich einfach Aussprache Clang“ . [{{{}}} URL LLVMdev Mailing – Liste] . 9. Juli 2008 abgerufen .
  3. Aufspringen^ Clang „Getting started“ Anweisungen
  4. Aufspringen^ Clang Static Analyzer . LLVM . 3. September 2009 abgerufen .
  5. Aufspringen^ Treat, Adam (19. Februar 2005). „Mkspecs und Patches für LLVM kompilieren von Qt4“ . [{{{}}} URL Qt4 Vorschau Feedback Mailing – Liste] .

Præcompiler

Ein præcompiler , auch genannt ein Präprozessor ist ein Programm , das eine Kopie ändern kann den Quellcode für ein Computerprogramm , in der modifizierte Code auf übergeben wird den Compiler oder Assembler . Præcompileren kann Code (Include – Dateien mit Teilen des Programmcodes) einzufügen, ersetzen præcompilervariable mit Konstanten oder Phrasen und erweitert Makros . Ein præcompiler kann in Abhängigkeit von bestimmten Bedingungen verschiedene Dinge tun. Richtig angewendet, damit ein præcompiler die Verwendung eines völlig anderen oder erweiterte Syntax als der Compiler übernimmt und somit für die Durchführung eines weiteren bilden die Grundlage Programmiersprache . Præcompileren kann auch machen es systematische Änderungen und Anpassungen des Programmcodes Beispiel wesentlich einfacher zu machen. mit Hilfe von Vorlagen. Ein præcompiler kann auch die Anbindung an andere Systeme machen, zum Beispiel. ein Datenbanksystem , einfacher und weniger umfangreich. Ein præcompiler kann eine eigenständige Anwendung sein, oder seine Funktion kann in den Compiler integriert werden.

Präprozessor

Ein Vorprozessor (in Englisch: Präprozessor ) ist eine Art von Compiler mit dem Unterschied , dass es nicht übersetzt den Quellcode zu Maschinencode , sondern übersetzt sie in eine Art temporärer Daten (oft Maschinencode artige Anweisungen, dh Bytecode ), die vorbehandelt wird und besser lesbar für das Programm (z. B. eine virtuelle Maschine ), denen sie in. eine virtuelle Maschine bezeichnet eine an einen Vorprozessor gekoppelt gelesen werden Interpreter .

Beispiele für Programmiersprachen mit Preprozessoren

Lua
Lua verwendet einen Präprozessor den Quellcode in Maschinen wie Anweisungen zu übersetzen , bevor sie in die liest virtuelle Maschine , die sie, das heißt eine führt Dolmetscher .
C ++
C ++ ‚s Präprozessor untersucht für Präprozessordirektiven Quellcode (gelistet mit‘ # ‚), übersetzt sie und sie weitergeben hovedkompileren , wie sie die Art und Weise das Programm beeinflussen wird kompiliert auf. Allerdings gibt es keinen Standard für C ++ ‚s Präprozessordirektiven.

reguläre Ausdrücke

Reguläre Ausdrücke (übersetzt aus dem Englischen, reguläre Ausdrücke , häufig abgekürzt als regexp oder regex ) ist ein fortschrittliches matchingsprog verwendete Zeichenfolge zu vergleichen. Reguläre Ausdrücke werden von vielen verwendet , Texteditoren für die Suche und den Austausch von Teilen von Texten. Viele Programmiersprachen haben Unterstützung für reguläre Ausdrücke Textstrings zu manipulieren. Unix half weitgehend von regulären Ausdrücken zu machen durch Programme bekannt sind, wie sed und grep .

Grund

Ein regulärer Ausdruck, auch genannt Muster , ist ein Begriff, der eine Reihe von Text beschreibt , die das Muster zu entsprechen. Sie können nützlich sein bei der Bestimmung , ob eine Zeichenfolge an eine zugelassene Menge gehört, wenn Sie in einem größeren Text für das Muster eines Teils suchen, oder wenn Sie auch mit einem anderen Teil einer Textzeichenfolge ersetzt werden sollen.

Reguläre Ausdrücke haben eine Syntax , wo die Zeichen in gemeinsamen Zeichen aufgeteilt , die meinen , was sie sagt, und Meta – Zeichen , die eine besondere Bedeutung haben. Es gibt verschiedene Dialekte von regulären Ausdrücken , die bestimmen , welche Zeichen sind etwas Besonderes. Unten ist ein Dialekt , wenn das mit mehreren Implementierungen in modernem verwendeten kompatibel ist Programmiersprachen .

Die häufigsten Anzeichen

Die häufigsten Anzeichen sind am einfachsten. Der reguläre Ausdruck Hejsaist nur , dass:
eine Folge von fünf Stellen, wobei die erste eine ist H , wird die nächste a e und so weiter. Es ist untergeordnet , was kommt vor oder hinter den fünf Zeichen. Der Begriff Hejsaentspricht somit mit Text enthält , Hejsanund , Hejsa!aber nicht , hejsawenn Sucht gibt es , ob es groß oder klein ist – siehe Zeichenklassen unten. Alle alphanumerischen Zeichen sind häufig Zeichen. Buchstaben außerhalb des ASCII – Zeichensatzes, wie æ , ø und å auch zu, und das gleiche gilt für andere nicht-englische Buchstaben.

Metazeichen

Meta-Zeichen wird verwendet, um eine Reihe von Zeichen zu beschreiben, anstatt einzelne Zeichen. Ohne Metazeichen waren wir wörtliche Sätze beschreiben nur in der Lage, aber mit Meta-Zeichen können wir Sätze von mehr abstrakten Kriterien beschreiben. Beginnen wir mit den einfachsten Metazeichen starten:

Punkt (.)
Ein Punkt steht für einen beliebigen Zeichen mit Ausnahme von „neue Zeile“ ( \noder New Line ).
Asterisk (*)
Ein Sternchen bedeutet null oder mehr des vorherigen Zeichens und erfordert daher , dass die folgende etwas gültig. .*Mittel, beispielsweise null oder mehr von einem beliebigen Zeichen und a*bedeuten null oder mehr A sind.
Plus (+)
Ein Plus scheint fast , als der Stern, sondern bedeutet eine oder mehrere der vorherigen Zeichen. Der Unterschied liegt hier in einem regulären Ausdruck, der a*die Textzeichenfolge tatsächlich passen bbbbbb da es null oder mehr ein ist . a+mindestens eines ein erfordern würde.
Fragezeichen (?)
Ein Fragezeichen bedeutet Null oder Eins des vorherigen Zeichens.
Zirkumflex (^)
A circumflexa ist ein Ankerzeichen an den Anfang einer Zeichenfolge oder Zeile entspricht. Es macht keinen Charakter passen , aber es verankert die nachfolgenden Zeichen. katreagiert Strings auf alle Sequenz , in der Katze irgendwo enthalten ist. ^katAndererseits wird nur passen , wenn die Sequenz Katze die erste ist.
Dollarzeichen ($)
Ein weiterer Anker Zeichen entsprechend dem Ende einer Schnur oder Leitung.
Backslash (\)
Ein Schrägstrich wird verwendet , um einen metategns Normalwert auszudrücken, d.h. wenn Sie einen echten Stern zum Ausdruck bringen wollen, verwenden Sie \ *. Zeichen können auch ein sein Oktalwert oder einen hexadezimalen Wert , um alle Zeichen auszudrücken. Dies wird beispielsweise als getan \ 020 für Räume. Dies ist nützlich für Zeichen , die normalerweise nicht gedruckt werden können.
Steuerzeichen können schwierig sein, zu schreiben und zu repräsentieren, ist auch mit einem umgekehrten Schrägstrich markiert.
regex Name ASCII oktal
\ a Alarm <BEL> \ 007
\ b Rücktaste <BS> \ 010
\ e Flucht <ESC> \ 033
\ f Formularvorschub <FF> \ 014
\ N neue Linie [1] <LF> \ 012
\ r Wagenrücklauf [2] <CR> \ 015
\ t Verlust <HT> \ 011
\ v vertikale Verlust <VT> \ 013
Vertikal bar (|)
Eine vertikale Linie zeigt eine Alternative zwischen zwei regulären Ausdrücken auf beiden Seiten davon. Der reguläre Ausdruck Hans|Gretheentspricht seinen oder Grethe . Ein typisches Beispiel ist , wenn Sie die Unterschiede zwischen englischen und amerikanischen Rechtschreibung zu berücksichtigen haben, f. Ex grey|gray.
Gruppierung mit runden Klammern
Clustering wird oft mit Alternativen verwendet. Um zu sehen, das Datum, Betreff und Absender in einer E – Mail , können Sie sie in dem Hauptkörper sehen. Ein Header wird durch einen Namen gekennzeichnet , daß die ersten in einer Linie angezeigt wird, und wird gefolgt von einem Doppelpunkt (:). Der reguläre Ausdruck ist ^(Date|Subject|From):.

Zeichenklassen

[] Markiert eine Zeichenklasse. [aA]entsprechend einem Zeichen , das entweder ein oder A . [abcd]entspricht einer der Buchstaben a , b , c oder d . Es ist auch möglich , einen Bereich zu spezifizieren. [0-9]entspricht alle Zahlen zwischen 0 und 9 und [a-z]entspricht das Kleingedrucktes auf Englisch. Es ist auch möglich , mehrere Bereiche von Werten der gleichen Zeichenklasse zu kombinieren, wie f. Zum Beispiel [a-fA-F0-9]zu einem heksadecimaltal entspricht. Der Bindestrich ist ein Meta – Zeichen in der Zeichenklasse, mit der Ausnahme , wenn es zuerst ist, [-a-z]entspricht einen kleinen Buchstaben oder einen Bindestrich.

Eine weitere Meta – Zeichen in den Zeichenklassen sind cirkumfleksen (^), aber nur , wenn es das erste Zeichen. Die Bedeutung davon ist die Negation der ganzen Zeichenklasse. [^abcd]entspricht dann auf alle Zeichen außer einem , b , c und d . [3] Als ein Beispiel der reguläre Ausdruck <[^>]*>äquivalent zu einem Etikett in HTML und kann alle Markup von HTML zu entfernen , verwendet werden , sie als Klartext zu präsentieren.

Der POSIX – Standard wird einige spezielle Zeichenklassen definiert, die die Handhabung der Sprache abhängig Details vereinfacht. Zum Beispiel entspricht [[:lower:]]auf [a-z]den englischen Einstellungen , wie es entspricht [a-zæøå]den dänischen Einstellungen.

[: Alnum:] Buchstaben und Zahlen
[: Alpha:] Buchstaben
[: Blank:] Leerzeichen und Tabulatoren
[: Cntrl:] Steuerzeichen
[: Digit:] Figuren
[: Graph:] Schriftzeichen ex. Lücke
[: Lower:] Klein
[: Print:] Grafik Zeichen inkl. Lücke
[: Punct:] Zeichen nach grammatischem Satz
[: Space:] Räume, Zeilenvorschübe und dergleichen
[: Upper:] Groß
[: Xdigit:] hexadezimal

Da die oben genannten Klassen unelegant zu verwenden sind, haben wir einige Kurzformen ähnlicher Art entwickelt.

\ d Figuren
\ D etwas anderes als Zahlen
\ w Buchstaben und Zeichen, die Teil eines Wortes sein kann
\ W Zeichen, die nicht Teil eines Wortes sein
\ p Leerzeichen Zeichen – Leerzeichen und Zeilenumbrüche mm.
\ S Schriftzeichen – kein Leerraum

Geschichte

Der Mathematiker Stephen Cole Kleene eingeführt regulären Satz (regular Sets) in Algebra und regulärer Ausdruck Notation sie für die Expression.

UNIX Texteditor ED war einer der ersten Computerprogramm , das die Vorteile von regulären Ausdrücken nahm. Bald folgte das Programm grep ein spezialisiertes tekstsøgnings Programm.

In 1986 , definierten die beiden Arten von regulären Ausdrücken in dem POSIX – Standard.

  • Grund Reguläre Ausdrücke sind die Art in der ED verwendet, wird es als allgemein veraltet; aber viele Programme unterstützen die aus Gründen der Abwärtskompatibilität .
  • Erweiterte Reguläre Ausdrücke , wo meta Zeichen Plus (+) und Fragezeichen (?) Eingeführt wird , und die Verwendung von Aufkantung nicht durch erforderlich Klammern .

Die Programmiersprache Perl hat eine erweiterte Version von regulären Ausdrücken entwickelt, und heute sprechen wir oft auf Perl Compatible Regular Expressions – PCRE, die mehr oder weniger hat insbesondere implementiert .Net und Java (nach Version 1.4).

Praktische Anwendung

Regex wird oft selbst in den einfachsten Programme geschrieben in Perl verwendet, findet aber seine allgemeine Anwendung , wenn die Analyse / Analyse von Text auftreten müssen (z. B. in Programmen wie Emacs oder vi-Editor ). Ein Beispiel wäre , um sicherzustellen , dass die Nutzer nicht illegal waren eingeben (oder unerwünschte) Werte in einem Formular im Internet oder in einem Programm – so Probleme mögen. SQL – Injection kann leicht vermieden werden (zB erlauben nur Buchstaben und Zahlen . : [A-zæøåA-ZÆØÅ0-9]))

Hinweise

  1. Aufspringen^ Auf einem Mac wird \ n entsprechen oft zurück zur Kutsche.
  2. Aufspringen^ Auf einem Mac wird \ r oft entsprechen Vorschub auszukleiden.
  3. Aufspringen^ ob die endgültige Zeilenumbruch Linie gezählthängt von der Implementierung.