|
http://sites.schaltungen.at/googel-suche/schaltungen-suche
Wels, am 2017-01-07BITTE nützen Sie doch rechts OBEN das Suchfeld [ ] [ Diese Site durchsuchen]DIN A3 oder DIN A4 quer ausdrucken
*******************************************************************************I** DIN A4 ausdrucken (Heftrand 15mm / 5mm) siehe http://sites.schaltungen.at/drucker/sites-prenninger
********************************************************I* ~015_b_PrennIng-a_googel.suche-schaltungen.suche (xx Seiten)_1a.pdf
VOLLTEXTINDEX
Siehe auch in
http://sites.schaltungen.at/regex-suche/regex
I
n GOOGLE wird mit Volltext-Index (full-text index) gesucht
Ein Volltext-Index ist ein Register, das jedes einzelne Wort aus sämtlichen verzeichneten Dokumenten enthält.
Ein weniger populärer Irrglaube ist, dass Volltextindizes nur verwendet werden (sollten), wenn Zeit und Geld für ein funktionierendes Ordnungssystem fehlen – eher richtig ist es, dass "Volltextindexierung" nicht gegen Ordnungssysteme bestehen kann.
https://de.wikipedia.org/wiki/Volltextindexierung
CMOS-555-Timer-IC AND Toggle-FlipFlop sucht nach den 6 Worten CMOS 555 Timer IC AND Toggle FlipFlop
"CMOS-555-Timer-IC" AND "Toggle-FlipFlop" sucht nach genau den Begriffen
Suchmuster bestehend aus * Sternchen und Fragezeichen ?
??555 sucht nach NE555 LM555
???555 sucht nach LMC555 TLC555
*555 sucht nach 555 NE555 LM555 LMC555 TLC555
Seiten = das alleinstehende Wort seiten muss vorkommen findet 2.418 Dokumente
*Seiten ODER (*Seiten) = alles was mit Seiten aufhört z.B. ... Internetseiten findet 2.576 Dokumente
* Seiten ODER (* Seiten) = die Suche mit Leerzeichen heißt "IRGENDWAS _oder_ Seiten" ... ergibt praktisch ALLES!
Klammern sind NICHT im Index (weil kein Wort) - also im Volltextindex danach suchen ist sinnlos!
Klammern sind in Volltextindexsuche wie in der Mathematik
(haus~ AND -hausbau) OR haushalt
tilde = ungenaues haus z.B. haushalt aber nicht hausbau (wegen minus) oder eben haushalt
~ tilde ähnliche suche
Mayr~ findet z.B. MAYR Mayrs Mayr Mayer Mair Mahr May Mair
555~ findet die Zahlen z.B. NE 555 NTE-555 LMC55 CMOS-555 5550 556 558
Aus MS-DOS Zeiten
dir *.doc
copy *.??t c:\temp
https://www.windowspro.de/wolfgang-sommergut/pdf-dokumente-windows-desktop-search-durchsuchen
********************************************************I*
http://sites.schaltungen.at/regex-suche / REGULÄRE AUSDRÜCKE für Anfänger Das Durchsuchen von Texten nach bestimmten Stellen ist eine der Standardaufgabe.
Dazu gibt es die Metaspracheder regulären Ausdrücke.
Zusammenfassung der RegEx-Bestandteile
300_d_RegEx-x_Regular Expressions Zusammenfassung (42 Seiten)_1a.pdf
BeBeispiel-Regex
Die eckige Klammer bindet stärker als die runden.
Stern, Pluszeichen und Fragezeichen binden stärker als Hintereinanderschreiben, d.h. ab* bedeutet a(b*) und nicht (ab)*.
Der senkrechte Strich bindet schwächer als Hintereinanderschreiben, d.h. ab|c bedeutet (ab)|c und nicht a(b|c).
Mehrere Sterne, Pluszeichen oder Fragezeichen oder aus diesen Zeichen unmittelbar zusammengesetzte Kombinationen dürfen nicht vorkommen.
RegExp Reguläre Ausdrücke
https://wwwlehre.dhbw-stuttgart.de/~vilas/RegExp.pdf
Vorrang-Regeln
● Die eckigen Klammern binden stärker als die runden. ● Stern, Pluszeichen und Fragezeichen binden stärker als Hintereinanderschreiben, d.h. ab* bedeutet a(b*) und nicht (ab)* ● Der senkrechte Strich bindet schwächer als Hintereinanderschreiben, d.h. ab|c bedeutet (ab)|c und nicht a(b|c) Mehrere Sterne, Pluszeichen oder Fragezeichen oder aus diesen Zeichen unmittelbar zusammengesetzte Kombinationen dürfen nicht vorkommen
/ Startzeichen für einen regulären Ausdruck
Leerzeichen /...- z.B. Bio- . = Jokerzeichen findet 3 beliebige Zeichen und einen Bindestrich
^ negation
/\d\d\d\d .* z.B. 4321 Kurzanl.... am Anfang einer Zeile wird nach 4 Ziffern gesucht - gefunden wird z.B. die Zahl 4321
/.*555$ z.B Stromb....mer NE555 Ende einer Zeile $ es wird nach der Zahl 555 gesucht /.* 0 bis alle Zeichen /.+ 1 bis alle Zeichen /.? 0 oder genau 1 Zeichen /.* LM.{3} findet LM & 3 Zeichen /.{3,} findet min. 3 Zeichen
/.* .{0,3} z.B. FAQ findet max. 3 Zeichen
/.* .{2,6} z.B. DORIS findet 2 bis 6 Zeichen
/[@üöäß] findet ein Zeichen aus der Liste @..ß /[a-z] findet ein Zeichen von a bis z /[0-9] Suche ein Ziffer von 0 bis 9 /[[:alpha:]] Suche einen Buchstaben /[[:punct:]] Suche nach einem Punkt /[[:digit:]] Suche eine Zahl /[[:space:]] Suche nach einem Whitespace /.*[re)] .* alles mit Klammern beim Suche nach ) gefolgt von einem Leerzeichen
^ Beginn einer Zeichenkette.
$ Ende einer Zeichenkette . Jedes beliebige Zeichen [ Anfang einer Zeichendefinition ] Ende der Definition ( Beginn eines Suchausdrucks. ) Ende eines Suchausdrucks. { Beginn Anzahl-definition. } Ende einer Anzahl. | Das „Oder“ zwischen zwei Ausdrücken. \ Ein Zeichen maskieren, damit danach gesucht werden kann. * Das vorangegangene Zeichen tritt kein oder mehrmals auf. ? Das vorangegangene Zeichen tritt keinmal oder einmal auf. + Das vorangegangene Zeichen tritt einmal oder mehrmals auf.
https://www.maclife.de/news/geniale-tipps-tricks-bessere-erfolgreiche-suche-bearbeitung-dateien-10065353.html
^ steht für den Zeilenanfang (nicht zu verwechseln mit ^ bei der Zeichenauswahl mittels [ und ]). $ kann je nach Kontext für das Zeilen- oder Zeichenketten-Ende stehen, wobei bei manchen Implementierungen noch ein „\n“ folgen darf. Das tatsächliche Ende passt zu \z. \ hebt gegebenenfalls die Metabedeutung des nächsten Zeichens auf (siehe Maskierungszeichen). Beispielsweise lässt der Ausdruck (A\*)+ die Zeichenketten „A*“, „A*A*“ usw. zu. Auf diese Weise lässt sich auch ein Punkt „.“ mit \. suchen, während nach \ mit \\ gesucht wird. \b leere Zeichenkette am Wortanfang oder am Wortende \B leere Zeichenkette, die nicht den Anfang oder das Ende eines Wortes bildet \< leere Zeichenkette am Wortanfang \> leere Zeichenkette am Wortende \n ein Zeilenumbruch im Unix-Format \r ein Zeilenumbruch im (alten, d. h. vor dem Jahr 1999) Mac-Format \r\n ein Zeilenumbruch im DOS- und Windows-Format \t ein Horizontal-Tabulatorzeichen https://de.wikipedia.org/wiki/Regulärer_Ausdruck
RegEX
1. Überblick 1.1 Was sind Reguläre Ausdrücke? Eine der nützlichsten Eigenschaften von Perl (wenn nicht die nützlichste Eigenschaft) ist das mächtige String-Handling.
Reguläre Ausdrücke oder Regular Expressions sind dabei eines der mächtigsten Werkzeuge in Perl und mittlerweile auch einigen anderen Programmiersprachen, so VB.NET.
Damit können bestimmte Muster in einem Text gesucht und auch ersetzt werden.
Zum Beispiel kann man mit einfachen Mitteln testen, ob ein String wie eine Email-Adresse aussieht.
Reguläre Ausdrücke können auch als komplexe Suchausdrücke verwendet werden und um große Datenbestände zu durchsuchen.
Reguläre Ausdrücke sind allerdings für Neulinge, die nicht aus der Unix-Welt kommen, sehr ungewohnt und einer der Hauptgründe dafür, warum in manchen Perl-Scripts ziemlich merkwürdige, kryptisch anmutende Zeichenfolgen vorkommen.
Trotzdem lässt sich das Grundprinzip relativ einfach verstehen und zur Erleichterung der Programmierarbeit einsetzen.
1.2 Anwendungsbeispiele
Reguläre Ausdrücke sind an vielen Stellen in der Programmierung sinnvoll und können dem Programmierer dabei die Arbeit stark erleichtern, den Quellcode kürzer und übersichtlicher machen.
Angewendet werden reguläre Ausdrücke zum Beispiel
zur Überprüfung von Benutzereingaben (Email-Adressen, URLs, Adressen, Benutzernamen, Datumseingaben, etc.), zur Verarbeitung von String-Daten (Systemzeit, Datei-Lese-Vorgänge, etc.), zum Suchen und Ersetzen innerhalb von Texten, zum Zerlegen von Strings nach vorgegebenen Mustern, zum Parsen von Texten ... 2. Aufbau regulärer Ausdrücke Ein regulärer Ausdruck ist allgemein ein Muster (engl. Pattern), das mit dem zu untersuchenden String verglichen und auf Übereinstimmungen (Matches) überprüft wird.
2.1 Zeichen/Zeichenfolgen/Zeichenklassen
Beginnen wir mit einem einfachen Beispiel, der Überprüfung, ob ein String den Buchstaben "b" enthält.
Der entsprechende reguläre Ausdruck dazu sieht folgendermaßen aus:
b
Was bedeutet dies nun genau?
Die RegEx-Maschine durchsucht einen String von links nach rechts und überprüft, ob der Buchstabe "b" auftritt.
Der Ausdruck passt (matcht) also auf "Buchstabe" oder "bla bla bla", aber nicht auf "Zahl" oder "Buch" (Groß-/Kleinschreibung wird unterschieden!). Genauso lässt sich auch das Auftreten einer Zeichenfolge testen:
test
passt zum Beispiel auf "getestet" und "testen". Eine weitere Möglichkeit, das Auftreten von Buchstaben zu überprüfen sind sogenannte Zeichenklassen.
Dabei kann man eine Gruppe von Zeichen zusammenstellen, die alternativ vorkommen können.
[abc]
passt dementsprechend auf jeden String, der entweder ein a, b, oder c enthält.
Die gesamte Klammer stellt also nur ein Zeichen im Suchmuster dar.
Dieses Verfahren lässt sich auch genau umgekehrt verwenden:
[^abc] steht für ein beliebiges Zeichen außer a, b und c.
Außerdem lassen sich in Zeichenklassen auch Bereiche angeben:
[a-z] matcht also einen beliebigen Kleinbuchstaben.
2.2 Platzhalter und Steuerzeichen
In vielen Fällen, kann oder will man allerdings die zu findenden Zeichen nicht so genau angeben, sondern auch beliebige Zeichen erlauben.
Dazu existiert in regulären Ausdrücken der Punkt . als Metazeichen, das standardmäßig alle Zeichen außer dem Zeilenumbruch findet.
a.
passt also auf "an" oder "ab" etc.
Oftmals möchte man aber nicht unbedingt alle Zeichen erlauben, sondern nur Buchstaben oder nur Zahlen.
Auch dafür gibt es in regulären Ausdrücken Kurzformen:
String Bedeutung Erklärung
\d digit Ziffern 0 bis 9 \D jedes Zeichen außer 0 bis 9 \w word Wort-Zeichen sind Buchstaben a, Ziffern 0 und der Unterstrich _ \W alles außer den Zeichen von \w /.* \W\W\W .* findet *** \s space Leerzeichen, Tabulatoren oder Zeilenumbruch \S alles außer \s Tabelle 2. 1 : Spezielle Zeichenklassen
\d matcht zum Beispiel eine beliebige Ziffer.
2.3 Klammern und Alternativen
Grundsätzlich können in regulären Ausdrücken runde Klammern gesetzt werden, um bestimmte Abschnitte zusammenzufassen.
Besonders hilfreich ist das, um Alternativmöglichkeiten anzugeben.
Diese werden in Klammern gesetzt und durch einen senkrechten Strich (Pipe) | getrennt:
(ab|an)geben
matcht z.B. "angeben" und "abgeben".
2.4 Quantifiers (Wiederholungsoperatoren)
Zeichenwiederholungen können in regulären Ausdrücken mit Wiederholungsoperatoren gekennzeichnet werden.
Das Fragezeichen ? bedeutet: das Zeichen vor dem Fragezeichen oder auch nicht.
aus?
matcht also "aus" und "au".
Das Pluszeichen + bedeutet: eine oder mehrere Wiederholungen des Zeichens, das vor dem Pluszeichen steht.
aus+
matcht also "aus", "auss", "ausss", etc.
Das Sternzeichen * bedeutet: keine, eine oder mehrere Wiederholungen des Zeichens, das vor dem Sternzeichen steht.
aus*
matcht also "au", "aus", "auss", etc.
Wenn vor den Zeichen + oder * ein Punkt . steht (der für ein fast beliebiges Zeichen steht), erzeugt man einen Platzhalter, der dem * Platzhalter in der DOS/Windows-Welt, etwa bei Dateinamen, oder auch bei der Google-Suche entspricht:
aus.*
findet "aus", "ausgeben", "ausgehen", "ausfahrbar" etc.
{ }
Geschweifte Klammern mit einer Zahl oder zwei durch Komma getrennten Zahlen darin stehen für Wiederholungen des Zeichens vor der geschweiften Klammer an der betreffenden Stelle.
Dabei können Sie auch das Punktzeichen vor der geschweiften Klammer notieren.
In diesem Fall bedeutet die Angabe innerhalb der geschweiften Klammer: so viele beliebige Zeichen wie angegeben.
Die erste Zahl in den Klammern bedeutet dabei die Mindest-, die zweite die Höchst-Anzahl an Zeichen.
x{3,6}
matcht zwischen 3 und 6mal "x". Wird eine der beiden Zahlen weggelassen, so gilt entsprechen nur eine Mindest- bzw. Höchstzahl, also
x{3,}
für 3 und mehr "x" bzw.
x{,5}
für 0 bis 5 "x". Wird nur eine Zahl ohne Komma notiert, so gilt diese als genaue Anzahl an Zeichen:
x{7}
matcht genau 7mal "x". Alle der aufgeführten Quantifiers (Wiederholungsoperatoren) gelten dabei nicht nur für einzelne Zeichen, wie in den bisherigen Beispielen, sondern lassen sich auch auf geklammerte Zeichenklassen oder Teile des regulären Ausdrucks anwenden.
(abc)+
matcht z.B. "abc", "abcabc", "abcabcabc" etc. und
(a.){2,3}
matcht 2- bis 3mal ein "a" gefolgt von einem beliebigen Zeichen, also z.B. "azaz" oder "a1a1a1".
2.5 Anfang/Ende
In regulären Ausdrücken gibt es auch spezielle Zeichen, die Zeilen- bzw. String-Anfang und -Ende kennzeichnen.
^
Das Caret-Zeichen ^ steht dabei für den Zeilenanfang, das Dollarzeichen $ für das Zeilenende.
^abc
matcht also die Zeichenkette "abc", aber nur wenn diese am Anfang des untersuchten Strings steht,
$
abc$
matcht "abc" nur am Ende des untersuchten Strings.
2.6 Metazeichen
Alle bis jetzt genannten Zeichen, also
. ? + * ^ $ \ ( ) [ ] { }
haben spezielle Bedeutungen in regulären Ausdrücken.
Um diese Zeichen im Text zu finden, müssen sie daher mit einem Backslash \ gekennzeichnet werden:
\.
matcht einen Punkt (und kein beliebiges Zeichen).
Quelle:
https://activevb.de/rubriken/kolumne/kol_19/regexp.html
********************************************************I*
In www.schaltungen.at ist es besser da genauer mit regulären Ausdrücken zu suchen.
Sucht im TITEL und in der BESCHREIBUNG
Bei linksammlung.info wird in title und description gesucht
Bei schaltungen.at wird mit regulären Ausdrücken nur in Suche und Text gesucht
alle anderen Suchfelder funktionieren NICHT so, sondern so wie in der Hilfe beschrieben - mit Volltextindex suche.
Ein regulärer Ausdruck (englisch regular expression, Abkürzung RegExp oder Regex) ist in der theoretischen Informatik eine Zeichenkette,
Reguläre Ausdrücke finden vor allem in der Softwareentwicklung Verwendung.
Neben Implementierungen in vielen Programmiersprachen verarbeiten auch viele Texteditoren reguläre Ausdrücke in der Funktion „Suchen und Ersetzen“.
Ein einfacher Anwendungsfall von regulären Ausdrücken sind Wildcards.
https://de.wikipedia.org/wiki/Regulärer_Ausdruck
http://www.regenechsen.de/phpwcms/index.php?regex_dt_elemente
********************************************************I*
/ slash Startzeichen für einen regulären Ausdruck
Liste der Elemente
. Wildcard - passt zu jedem Zeichen, ein Punkt bedeutet, dass an seinem Platz ein beliebiges Zeichen stehen kann, jegliches Zeichen (Ausnahme der Zeilenumbruch CR)
/.*M.ier.* findet somit Maier Meier Maiering (auf das ing passt der Suchstring nicht mehr), aber nicht Manieren.
/.*H..s.* findet sowohl Hans Haus Hirse als auch Suchmaschine es wird aber nicht Hase finden.
/.*er findet ... Lieder Bücher Timer Verstärker Sender Router Trigger Wandler Filter Logger Recorder Taster Tester usw.
/.*B[ui]rma.* matcht „Burma“ sowie „Birma“
/.*M[ae][iy]er.* matcht verschiedene Schreibweisen eines Namens
Der Punkt . dient dazu, nach einem beliebigen unbekannten Zeichen zu suchen.
/.*er\. findet ... Wächter. Arbeiter. Computer. Viewer. Begrenzer. Impulgeber.
Sucht man nach dem Punkt als Zeichen, so stellt man ein backslash voran \
[ ] Zeichenklassen überprüft ob einer der Zeichen enthalten ist, die eckigen Klammern kennzeichnen eine Zeichenauswahl.
mit eckigen Klammern wird nur genau ein Zeichen gesucht, unabhängig, wie viele Zeichen in der Klammer aufgeführt sind.
[AEX] Diese Kombination sucht Zeichenketten, die aus nur genau einem Zeichen bestehen, welches auch noch nur A, E oder X heißen muss.
[0-9] eine Ziffer von 0 bis 9 (Bindestriche sind Indikator für einen Bereich) ODER \d[egh] eines der Zeichen e g h
/.*h[ae]llo.* findet somit hallo hello Chello
[Aa] eines der Zeichen A a
[A3] eines der Zeichen A 3
[ ] Leerzeichen
[a-z] Kleinbuchstaben eines der Zeichen a bis z
[a-e] ist dasselbe wie [abcde]
/.*M[a-e]ier.* findet somit Maierhof Meiern Maiering
[A-Z] Großbuchstaben
[a-zA-z] Buchstaben eines der Zeichen a bis z oder A bis Z
/[A-Za-z0-9]/ - Erlaubt einen Großbuchstaben, Kleinbuchstaben oder Zahl
[a-zA-Z0-9] Buchstaben und Ziffern ein beliebiger lateinischer Buchstabe oder eine beliebige Ziffer ODER \w
[0-9a-zA-Z ] Leerzeichen am Ende
[0-9a-fA-F] Hexadezimalziffern
[.-] - letztes Zeichen Bindestrich noch nicht ganz klar
Auswahl enthält auch den Bindestrich - wenn er das erste oder das letzte Zeichen in der Aufzählung einer Zeichenklasse ist bzw. wenn seine Metafunktion innerhalb einer Auswahl durch ein vorangestelltes \- Zeichen aufgehoben wird
/.*[eE]lektor 24 Dokumente /.*Ele[kc]troni[kc] 719 Dokumente
/.*[a-z.]+/.* entspricht /.*[\w.]+/.* findet .....diba.at/
Der Punkt ist in diesem Fall kein spezielles Zeichen, weil er innerhalb der eckigen Klammern (Zeichenauswahl) steht.
Beliebiges Zeichen im Zeichensatz
/.*§ [ABC].* - es darf auf das § Zeichen jeder der in Klammern enthaltenen Buchstabe folgen.
findet somit § CD4011 § AF310 BA100 § BC547C § BF245
Beliebige Anzahl von Zeichen aus einem Zeichensatz
/.*§ [ABC]{2}.* - es muß auf das § Zeichen jeder der in Klammern enthaltenen Buchstabe 2-mal folgen.
findet somit § AA113 § BA100 § BC547C § CA3140 § CA3046
Zeichenklassen können durch Angabe in eckigen Klammern selbst definiert werden "[A-Z]"
Diese Angabe kann durch ein ^ als erstes Zeichen in den eckigen Klammern negiert werden.
/.*§ [^BE].* Form[^BE] - es darf auf das Zeichen § ein beliebiges Zeichen außer "B" oder "E" folgen.
findet somit § MC14440 § LT1510 § LM3914 § 2LED § L296
/.*§ [A-G].*- Sie können einen Bereich aufeinander folgender Buchstaben angeben.
findet somit § AF310 § BC547 § CD4011 § DIAC § ECS-20011 § FET § Ge
Bei diesem alphanumerischen Bereich wird zwischen Groß- und Kleinschreibung der Zeichen unterschieden.
Die Groß- und Kleinbuchstaben in diesem Bereich können Sie mit folgender Syntax abgleichen:
/.*§ [a-gA-G].*
[\b] Passt auf das Steuerzeichen für die Backspace-Tastet, welche den Cursor um eine Position nach links verschiebt und das dort stehende Zeichen entfernt.
(Sollte nicht mit \b verwechselt werden.)
Grundsätzlich können in regulären Ausdrücken runde Klammern gesetzt werden, um bestimmte Abschnitte zusammenzufassen.
Besonders hilfreich ist das, um Alternativmöglichkeiten anzugeben.
Diese werden in Klammern gesetzt und durch einen senkrechten Strich (Pipe) | getrennt:
Gruppierung
( ) dienen zur Gruppierung von Regulären Ausdrücken.
(...) dient der Gruppierung von Suchmustern. Das gefundene Muster wird in ein Subpattern für spätere Verwendung gespeichert.
ODER
| pipe - Alternative - ermöglicht Alternativen
...|...|... stellt Alternativen für das Suchmuster, die erste auftretende Alternative im String wird gefunden
/.* (Fritz|Prenninger|Haidestr.) .*
/.*(ab)|c ab alternativ c
/.*(der|das)-K.* findet somit Wander-Kompass Zylinder-Kurbelgehäuse Zahnräder-Katalog das-Kochrezept
/.*Kind(er|ergarten|le).* findet somit Kinder KinderNet Kindergartenpädagogin Kindergartenstraße Kindle Kindler Kindlers Kindlein /.*(ab|an)geben.* findet somit abgeben angeben /.*j[jhklWZ].* jhk alternativ WZ findet somit .9° jk-flipflop01 Banjac Nedeljko www.scjhaltungen.at
Diese Zeichen müssen nicht entwertet werden - sind keine Meta-Zeichen
: Doppelpunkt /.*mailto:.* 2.745 Dokumente _ Unterstrich /.*Seiten[)]_1a.pdf.* Trennstrich in 356 Dokumente - Bindestrich /.*[r]-[O].* findet Unter-Ordner 467 Dokumente - Bindestrich /.*[a-z]-[0-9].* findet Sketch-1 3.916 Dokumente
@ Klammeraffe /.*@gmail.com.* 9 Dokumente
Wort mit verschiedenen Schreibweisen oder Sonderzeichen suchen
vi@gra v1agra v1@gra v!@gr@ v[i!1][a@]gr[a@].*
Zeilenanfang und EndeNeben den bereits erwähnten Wortgrenzen sind noch zwei weitere Operatoren hilfreich:
das Caret oder Dächlein ^ für den Anfang und das Dollarzeichen $ für das Ende einer Zeile.
Soll der Ausdruck zum Beispiel Zeilen finden, die mit “Anfang” beginnen, schreiben Sie
^Anfang Das genügt schon. Soll eine komplette Zeile erkannt werden, schreiben Sie ^Anfang bis Ende$ Diese Zeile muss dann genau dem Muster entsprechen. Es dürfen in der Zeile keine weiteren Zeichen stehen. ^ (Dach- Zirkumflex-Zeichen) steht für den Zeilenanfang, überprüft den Anfang des Textes
nicht zu verwechseln mit ^ bei der Zeichenauswahl mittels [ ^.... ] da steht es für NICHT
.
/.*^aus.* Die Zeichenkette beginnt mit einem Text der auf aus passt, aus ist der Anfang einer Zeichenkette, der Text muss mit aus beginnen
findet somit austriamicrosystems ausgefallenes ausländische ausländer ausser austria austro ausschalten auskunft
[^a] ein beliebiges Zeichen außer „a“ ( ^ am Anfang einer Zeichenklasse negiert selbige)
Das Dach (^) negiert die Auswahl. Daher werden hier alle Zeichen des lateinischen Alphabets außer "a" angesprochen.
/.*hall[^aeiou].* - die Buchstaben hall dürfen nicht mit a, e, i, o oder u enden
findet somit Ultraschall-Empfänger Schalldämpfer Schallpegel Nachhall-Verstärker Schallplatte
$ (Dollarzeichen) überprüft den Ende des Textes
/.*haus$ findet somit Jagdhaus Gasthaus Fertighaus Wirtshaus Versandhaus Bausatzhaus Auktionshaus Autohaus
/.* $ das letzte Zeichen muß ein Leerzeichen sein.
[^ ]$ die Zeichenkette muss aus min. einem Zeichen bestehen, und das letzte Zeichen darf kein Leerzeichen sein.
[^1-4] Finde alle Ziffern, sofern sie keine 1, 2, 3 oder 4 sind!" Die Negation wird mit einem ^ bewirkt.
Das sollten wir uns merken, denn wir werden sehen, dass dieses ^ eine ganz andere Bedeutung hat, wenn es nicht in eckigen Klammern steht.
/.*#[A-Z]{2}\d{1,3}[^0-9]?.* findet somit #AE080-1 #AT325-x
[^0-9] Ein Zeichen, dass keine Ziffer ist
^ab$ Die Zeichenkette passt von Anfang bis Ende auf ab
Zeichenklassen können durch Angabe in eckigen Klammern selbst definiert werden "[A-Z]" /[abc^]/ - Das Zeichen ^ hat nur am Anfang einer Zeichenklasse eine Sonderbedeutung.
Diese Angabe kann durch ein ^ als erstes Zeichen in den eckigen Klammern negiert werden.
Soll es in einer Zeichenklasse literal verwendet werden, empfiehlt es sich, es nicht am Anfang zu setzen, da es sonst entwertet werden muss. Eigene Zeichenklassen
[abc] a, b oder c, (Einfache Klasse)
Eine negierte oder komplementäre Zeichenauswahl.
[^abc] Alles außer a, b oder c (Negierung) z.B. ist [^abc] dasselbe wie [^a-c].[a-z] a bis z oder A bis Z (einfacher Zeichenbereich) Es kann mit Hilfe eines Bindestrichs auch ein Bereich von Zeichen (z. B. von a bis z) festgelegt werden. [a-m[n-p]] a bis m oder n bis p; identisch mit [a-dm-p] (Vereinigung) /^Elektronik findet eine Zeilen, die mit Elektronik beginnt auch möglich /Elektro.* /Elektronik$ findet eine Zeilen, die mit Elektronik aufhört /^Elektrotechnische Grundlagen der Elektronik$ wenn eine kpl. Zeile erkannt werden soll Diese Zeile muss dann genau dem Muster entsprechen. Es dürfen in der Zeile keine weiteren Zeichen stehen. \ backslash Entwertet das nächste Zeichen Metazeichen müssen entwertet werden, um literal nach ihnen zu suchen.
Daher sind folgende Zeichen zu entwerten, um sie literal zu benutzen:
Metazeichen [ ] ( ) { } | ? + - * ^ $ \ . ~ Die Tilde ist auch ein Sonderzeichen, das maskiert werden muss. /^".* die Zeile beginnt mit Anführungszeichen findet somit "Bauen mit Holz in Oberösterreich"
/.*\.$ die Zeile endet mit einem Punkt findet somit +++ PrennIng.
/^$ findet Leerzeilen findet somit 14.292 Leerzeilen allerding werden alle Bücher gefunden !
/^TÜV Österreich$
Die Zeichen "^" und "$" verankern die in der Zeichenfolge enthaltenen Zeichen.
Das Zeichen "^" kennzeichnet den Beginn der Zeichenfolge,
während das Dollarzeichen "$" deren Ende kennzeichnet, sofern die Zeichen am Anfang bzw. am Ende platziert sind.
Das Zeichen "^" hat diese spezielle Bedeutung nur dann, wenn es das erste Zeichen in einem Muster ist.
Das Dollarzeichen "$" hat diese Bedeutung nur dann, wenn es das letzte Zeichen in einem Muster ist.
In diesem Fall ist "zeichenfolge" der einzige passende Wert.
/^[a-zA-Z]\w{3,14}$ alles noch testen
Das erste Zeichen des Passworts muss aus einem Buchstaben bestehen. Es muss aus mindestens 4 und höchstens 15 Zeichen bestehen. Es dürfen nur Buchstaben, Zahlen und der Unterstrich verwendet werden
/^(?=.*\d).{4,8}$
Kennwortausdruck Das Passwort muss zwischen 4 und 8 Ziffern lang sein und mindestens eine numerische Ziffer enthalten.
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,8}$
Passwort-passender Ausdruck Das Passwort muss mindestens 4 Zeichen und höchstens 8 Zeichen umfassen. Es muss mindestens einen Großbuchstaben, einen Kleinbuchstaben und eine numerische Ziffer enthalten.
/^.{4,8}$
Entspricht einer beliebigen Zeichenfolge zwischen 4 und 8 Zeichen. Begrenzt die Länge einer Zeichenfolge. Nützlich, um reguläre Ausdrücke zum Passwort hinzuzufügen.
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).{4,8}$
Kennwortausdruck, der einen Kleinbuchstaben, einen Großbuchstaben, eine Ziffer, eine Länge von 6-13 und keine Leerzeichen erfordert. Dies ist lediglich eine Erweiterung eines zuvor veröffentlichten Ausdrucks von Steven Smith ([email protected]). Das keine Leerzeichen ist neu.
/^([a-zA-Z0-9@*#]{8,15})$
Passwort-passender Ausdruck Passen Sie alle alphanumerischen Zeichen und vordefinierten Wild-Zeichen an. Das Passwort muss aus mindestens 8 und höchstens 15 Zeichen bestehen.
/^(?![0-9]{6})[0-9a-zA-Z]{6}$
entspricht einem sechsstelligen & quot; Passwort & quot; das muss aus Zahlen und Buchstaben bestehen, die mindestens einen Buchstaben enthalten.
/[^A-Za-z0-9]
Um nicht-alphanumerische Zeichen zu erkennen (z. B. für die Überprüfung des neuen Benutzernamens / Kennworts): monkey (AT) greyledge.net 14-Oct-2003 11:26
/^(?=[^\d_].*?\d)\w(\w|[!@#$%]){7,20}
Diese Regex kann verwendet werden, um Passwörter auf eine Länge von 8 bis 20 Zeichen zu beschränken und Sonderzeichen auszuwählen. Das Passwort kann auch nicht mit einer Ziffer, einem Unterstrich oder einem Sonderzeichen beginnen und muss mindestens eine Ziffer enthalten.
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,15}$
Passwort-passender Ausdruck Das Kennwort muss mindestens 8 Zeichen und höchstens 15 Zeichen umfassen. Es muss mindestens einen Großbuchstaben, einen Kleinbuchstaben und eine numerische Ziffer enthalten.
/^(?=.*[0-9]+.*)(?=.*[a-zA-Z]+.*)[0-9a-zA-Z]{6,}$
Das Passwort muss mindestens einen Buchstaben und mindestens eine Zahl enthalten und länger als sechs Zeichen sein.
/\w{5,255}
Dies ist Benutzername & amp; Kennwortüberprüfungsausdruck Leerzeichen sowie Sonderzeichen wie $ #% @ & amp; * () {} + sind nicht zulässig
/^(?=.*\d)(?=.*[a-zA-Z])(?!.*[\W_\x7B-\xFF]).{6,15}$
Kennwortprüfer Benötigt 6-20 Zeichen, darunter mindestens ein oberes oder unteres Alpha und eine Ziffer. Es sollte so gut wie alles andere nicht zulassen, einschließlich erweiterter Zeichen.
http://regexlib.com/Search.aspx?k=password
$ (Dollarzeichen) Überprüft den Ende des Textes - - kann je nach Kontext für das Zeilen- oder Zeichenketten-Ende stehen.
/.*Magazin$ - der Text muss mit Magazin aufhören
/.*w$ - w ist das Ende einer Zeichenkette - findet somit #B240 Computer Laser-Show
/.*aus$ die Zeichenkette endet mit aus - findet somit Jagdhaus blendet sich dann aus
/.*[$z] ein beliebiges Zeichen außer „z“ ( $ am Ende einer Zeichenklasse negiert selbige) - findet somit Linz 1800MHz Schutz Referenz
\ backslash Maskierung von Zeichen \ escape (Aufhebung von Metazeichen)
hebt die besondere Bedeutung von Metazeichen + ? * ( ^ $ [ { | \ . auf um diese literal suchen zu können.hebt gegebenenfalls die Metabedeutung des nächsten Zeichens auf (siehe Maskierungszeichen).
/.*(.\*)+ auf diese Weise lässt sich auch ein Stern * mit \* suchen
(A\*)+ die Zeichenketten „A*“, „A*A*“ usw. zu. - findet somit Conrad ***
/.*(.\.)+ auf diese Weise lässt sich auch ein Punkt . mit
\. suchen - - eher sinnlos da Punkte immer wo stehen
/.*(.\\)+ auf diese Weise lässt sich auch ein backslash
\ mit \\ suchen.
/.*(.\$)+ auf diese Weise lässt sich auch ein Dollar-Zeichen
$ mit \$ suchen.
in RegEx steht das $ Zeichen für das Ende des Textes wenn du nach einem $ Zeichen suchen willst, musst du \$ nehmen
Die Meta-Eigenschaft eines Zeichens kann durch einen vorangestellten Rückwärtsstrich (Backslash) aufgehoben werden.
Alle übrigen Zeichen des Alphabets stehen für sich selbst
\w matcht Wortzeichen, i.d.R jedoch keine Umlaute ü ö ä und „ß“ Abhilfe:
/.*[A-Za-zÄäÖöÜüß] für Wortzeichen
\. matcht einen Punkt
\b matcht Wortgrenzen
\b leere Zeichenkette am Wortanfang oder am Wortende - Steht für eine Wortgrenze.
Wortgrenzen sind an den Stellen, wo kein anderes Wortzeichen vor oder hinter einem Wortzeichen steht.
Eine Wortgrenze wird nicht in die Übereinstimmung aufgenommen.
Mit anderen Worten ist die Länge einer Wortgrenze gleich 0 - die Wortgrenze ist der Zwischenraum zwischen einem Wortzeichen und einem Zeichen, das kein Wortzeichen ist oder zwischen einem Wortzeichen und dem Anfang oder Ende der Eingabe.
(Sollte nicht mit [\b] verwechselt werden.)
/.*Autos? 33 Dokumente Das Fragezeichen wirkt sich auf den direkt davor stehenden Buchstaben aus.
Es bedeutet: Dieses Element darf genau nullmal oder einmal vorkommen.
Damit findet die Suche alle “Auto” und “Autos”.
Allerdings gehören dazu immer noch “Automobile” und alle anderen Auto-Varianten, weil der Reguläre Ausdruck noch nicht weiß, dass er nur nach ganzen Wörtern suchen soll. Das sagen Sie ihm mit
/.*\bAutos?\b 32 Dokumente Das \b steht für eine Wortgrenze.
Es wird also nur nach “Auto” und “Autos” gesucht, wenn diese beiden Begriffe als eigenes Wort vorkommen.
Wenn Sie Autos mit großem und kleinem Anfangsbuchstaben finden wollen verwenden Sie
/.*\b[Aa]utos?\b 34 Dokumente Die eckige Klammer fasst eine Gruppe von Zeichen zusammen, die alternativ gelten.
Als erster Buchstabe im Ausdruck darf also wahlweise ein großes oder kleines A stehen.
In der Regel werden Sie diese Unterscheidung aber nicht allzu oft brauchen.
Denn die meisten Regex-Parser haben einen Schalter, mit dem Sie die Unterscheidung von Groß- und Kleinschreibung an und ausschalten können.
\b Wortzeichen Beispiele:
/.*\bMon .* findet Mon Cheri
/.*\bMon.* findet Mono Monitor Monoflop Mondholz Monopoly elektor-Monatsheft
/.*heft\b.* findet Lösungsheft Schiessheft Halbleiterheft Monatsheft Sonderheft Aprilheft
/.*ond\b.* findet Mond Fastbond Kond. Second-Order M-Bond Beyond MondSeeLand Plafond Diamond Wissenschaftsfond
passt auf das "ond" in "Mond", weil "ond" das Ende der Zeichenkette ist, also nicht vor einem Wortzeichen steht.
Bei /.*\w\b\w.* wird niemals eine Übereinstimmung gefunden, weil eine Wortgrenze niemals gleichzeitig vor einem Wortzeichen und keinem Wortzeichen stehen kann.
\B leere Zeichenkette, die nicht den Anfang oder das Ende eines Wortes bildet
Grenzbezüge ^ Zeilenanfang oder Beginn des Textes $ Zeilenende oder Ende des Textes \b Wortgrenze \B alles außer eine Wortgrenze \A Beginn des Textes \G Ende des Textes \Z Ende des Textes oder des Textabschlusses \z Ende des Textes
Wiederholungen
? Vorheriges Zeichen ist optional
a? a kommt kein- oder einmal vor
Der voranstehende Ausdruck ist optional, er kann einmal vorkommen, braucht es aber nicht, das heißt, der Ausdruck kommt null- oder ein-mal vor.
/.*Pap?a.* findet Papa Paar PaarungsTester KondensatorPaarer Paarhofverband Paakstr.
Pap?a genau einmal oder kein Vorkommen - - Dies entspricht {0,1} erkennt vorhergehendes Element nicht oder einmal
ODER
Leitet konditionale Regexe (?(....)....|....) sowie Assertions (?=...) ein
/.*Heft [4-7]?.* findet Heft Heft 4-80 64er-Heft Halbleiter-Heft
/.*iPhone[1-7]? passt zu iPhone, iPhone2 usw. bis iPhone7
...(?=...) Positive Lookahead-Assertion.
Das Muster vor der Klammer wird nur erkannt, wenn das Muster in der Klammer danach gefunden wird.
Das Muster in der Klammer ist im Suchergebnis nicht enthalten.
Positives Lookahead funktioniert genauso.
q (?=u) entspricht einem q, dem ein u folgt, ohne dass das u Teil des Matches ist.
Das positive Lookahead-Konstrukt besteht aus zwei Klammern, wobei die öffnende Klammer von einem Fragezeichen und einem Gleichheitszeichen gefolgt wird.
/.*q(?=u).* findet (uhrenquarz) Spannungsquelle Equalizer Frequenz qualitativ Aquarien Tonquelle Aquarell
/.*q(?=ua).* findet Uhrenquarz Equalizer qualitativ Aquarien Aquarell
/.*Aq(?=ua).* findet Aquarien Aquarell Aquastat Aqua-Controll Aqua-Fit Aquamat Aquapool Aquapulco Aquaristic Aquarellmalerei Aquasol Aquateherm
/.*qua(?=s).* findet Aquastat Aquasal Aquasant Aquastop Aquasol
Folgende Quantifikatoren sind identisch:
* {0,} kein oder mehrere beliebige Zeichen + eines oder mehrere beliebige Zeichen {1,} genau ein beliebiges Zeichen
? {0,1} 0 oder ein beliebiges Zeichen
*? 0 oder mehrmals, bei minimal benutzten Zeichen zum Erfüllen des regulären Ausdrucks+1 1 oder mehrmals, bei minimal benutzten Zeichen zum Erfüllen des regulären Ausdrucks ?? muss nicht oder einmal vorhanden sein, bei minimal benutzten Zeichen zum Erfüllen des regulären Ausdrucks {min,}? mindestens min-mal, bei minimal benutzten Zeichen zum Erfüllen des regulären Ausdrucks {min,max}? zwischen min- und max-mal, bei minimal benutzten Zeichen zum Erfüllen des regulären Ausdrucks
https://www.luis.uni-hannover.de/fileadmin/buecher/leseproben/perl-kap10-lp.pdf
* allquantor - Wiederholung des vorherigen Elements (0 oder häufiger mal) - - Erkennt vorhergehendes Element nicht oder mehrmals - - Der voranstehende Ausdruck darf beliebig oft (auch 0x ) vorkommen. - Dies entspricht {0, } bis unendlich - - ... steht für Null bis viele Vorkommen des Zeichens oder Metazeichens.
a* a kommt kein oder mehrmals vor - Vorkommen des Zeichens a beliebig oft
z.B. [abc]* abbac
/Windows [0-9]*/ - Passt zu Windows, Windows 98 und Windows 7, aber nicht Windows7.
Kein oder mehrere Wiederholungszeichen
Kein oder ein Wiederholungszeichen
/.* Se?d.* - Dieses Muster bedeutet, dass entweder kein Zeichen oder das vor dem Symbol platzierte Zeichen verwendet werden dürfen. findet somit Sedeme Sedelmayer Sed-Cards Sediten Sedat Sedra Sedlaczek Seed
Kein oder mehrere Wiederholungszeichen
/.* Se*d.* - Verwenden Sie das Zeichen "*", um eine beliebige Anzahl des voranstehenden Zeichens oder gar kein Zeichen darzustellen.
findet somit Seeed Sedem Sedelmayer
Platzhalterzeichen - Verwenden Sie immer auch die Zeichen .und * als Platzhalterzeichen.
.* steht für irgendwas - Dieses Muster ermöglicht die Anzeige einer beliebigen Anzahl beliebiger Zeichen.
/.* [0-9]{6}-11 .* findet somit 906074-11 irgendwo im Text
/.* [\w]{3} .*
Hiermit werden nur Datumsangaben im Format TT.MM. gefunden.
/.*An.*bau .* findet somit Antennenbau Anemometer für den Selbstbau Antenne 4 - Grundlagen (Eigenbau
Wenn eine Anwendung beispielsweise manchmal ein Leerzeichen zwischen den beiden Wörtern dieser Eigenschaft einfügt und manchmal nicht, berücksichtigt diese Syntax beide Fälle.
1 bis unendlicha+ a kommt mindestens einmal vor.
/[0-9]+/ - Passt zu allen natürlichen Zahlen.
... kennzeichnet eine Mengenangabe. Das "+" steht für ein oder mehrere Vorkommen des Zeichens oder Metazeichens.
Mindestens ein Wiederholungszeichen
/.* Se+d.* - Verwenden Sie das Zeichen "+", um eine beliebige Anzahl des voranstehenden Zeichens darzustellen.
findet Seeed-Grove-Module Sedem Sedelmayer Sed-Cards Sediten Sedat Sedra Sedlacek
Der Unterschied zwischen diesem Zeichen und dem Zeichen * besteht darin,
dass mindestens ein Zeichen durch das Zeichen + dargestellt werden muss.
/a+ = a aa aaaa
/[0-9]+ = 0 34 02345 {3} Der voranstehende Ausdruck muss exakt 3-mal vorkommen.
/[ab]+ = a b aa bbaab usw.
{ } Menge - Quantifizierer
/.* \+{3} .* findet somit +++
a{3} a kommt genau 3x vor. - exakt 3-mal Wiederholung des vorherigen Elements
/.* [0-9]{3} .* passt zu allen 3 stelligen Zahlen findet somit 016 455 kHz 100 MOhm 555 741 TCA 785 100 mA
{2,} Der voranstehende Ausdruck muss min. 2-mal bis unendlich-mal vorkommen.
a{2,} a kommt min. 2-mal vor.
{,6} Der voranstehende Ausdruck kommt max. 6-mal vor
{0,6} Der voranstehende Ausdruck darf max. 6-mal vorkommen.
a{,6} a kommt max. 6x vor
{4,6} der voranstehende Ausdruck muss min. 4-mal und darf max. 6-mal vorkommen.
a{4,6} a kommt min. 4x, aber max. 6x vor - - wiederholung des vorherigen Elements min. 4-mal, max. 6-mal.
[0-9]{2,5} entspricht 2, 3, 4 oder 5 Ziffern in Folge, z.B. „42“ oder „54072“, jedoch nicht den Zeichenfolgen 0 1.1 oder a1a1
/.*#[a-zA-Z]{2}\d{1,3}[^0-9]? .* findet somit #AT320 #EV233a #Se337
\ Escape-Zeichen
der Backslash \ ein übliches ESC Maskierungszeichen
\d digit - Erkennt Ziffern - - steht für eine beliebige Ziffer [0-9] (digit). "\d\d" sucht also nach 2 aufeinanderfolgenden Ziffern.
\D no digit - Erkennt Nicht-Ziffern - - steht für keine Ziffer [^0-9] [^\d] "\D\D" sucht also nach 2 aufeinanderfolgenden Buchstaben.
\w word character - Erkennt alphanumerische Zeichen und den Unterstrich - - steht für einen beliebigen Buchstaben, ACHTUNG: auch eine beliebige Zahl oder einen Unterstrich (word) [a-zA-Z_0-9] , auch alphanumerische Zeichen (Wortzeichen) genannt.
\W no word character - Steht für keinen alphanumerische Zeichen (Wortzeichen) [^a-zA-Z_0-9] [^\w]. "\W\W" sucht also nach 2 aufeinanderfolgenden Ziffern.
\s white space - identisch mit [ \t\n\x0B\f\r] Leerzeichen - Zwischenraum - Leerraum (Whitespaces), Zeilenumbrüche, Tabulatoren etc. - meist zumindest das Leerzeichen und die Klasse der
\S no white space - alle Zeichen außer Leerraum; identisch mit [^\s]
Vordefinierte Zeichenklassen . Jedes Zeichen (Einstellbar ob auch Umbrüche enthalten sind) \d Beliebiges Ziffernzeichen; identisch mit [0-9] \D Alle Zeichen außer Ziffern; identisch mit [^0-9] \s Leerraumzeichen (White Space); identisch mit [ \t\n\x0B\f\r] \S Alle Zeichen außer Leerraum; identisch mit [^\s] \w Jedes alphanummerisches Zeichen; identisch mit [a-zA-Z_0-9] \W Alle Zeichen außer Jedes alphanummerische; identisch mit [^\w]
\a = BEL
\b = BS
\f = FF Seitenvorschub
\n = LF Zeilenbruch
\r = CR Wagenrücklauf
\t = TAB Tabulator
\v=VT vertikaler Tabulator
\S no whitespace Kein Leerzeichen - ein Zeichen, das kein Whitespace ist, also [^\s]
\b Erkennt Wortgrenzen - - leere Zeichenkette am Wortanfang oder am Wortende- Die Stellen, an denen Wörter aneinander grenzen, können beim Suchen bezeichnet werden, z.B. \b für Wortgrenze,
\B Erkennt Nicht-Wortgrenzen - - leere Zeichenkette, die nicht den Anfang oder das Ende eines Wortes bildet - \B für keine Wortgrenze, \< für Wortanfang, \> für Wortende, oder eine Teilmenge dieser Konventionen.
\z Erkennt das tatsächliche, physikalische Ende des Strings
\Z Erkennt das Ende des Strings bzw. das Zeichen unmittelbar vor dem Newline am Ende
\< leere Zeichenkette am Wortanfang
\> leere Zeichenkette am Wortende
\n newline - Zeilenumbruch - neue Zeile
\r carriage return (CR) - Wagenrücklauf \f form feed - Seitenvorschub \t Tabulator \a beep - Piepton - Signalton \e Escape (ESC-Zeichen) (im ASCII-Zeichensatz Hexadezimal-Code 1B, dezimal 27), Umschaltzeichen zwischen normaler Bedeutung der Zeichen und Sonderfunktion Suche nach Tabulatoren und Leerzeichen: [\t ]* hat gegenüber ( *|\t*) den Vorteil, dass Leerzeichen und Tabs gemischt vorkommen können
/[\t]* suche nach Tabulatoren findet 14.292 Dokumente
/.* \d{1,2}\.\d{1,2}\.\d{2,4} .* matcht Datumsangaben
/.* \d\d\.\d\d\.\d\d\d\d .* sucht zwei Ziffern es folgt der Backslash und dann erst der Punkt, das bedeutet, es soll der Punkt literal, also als Punkt und nicht als beliebiges Zeichen gesucht werden.
Erneut sollen 2 Ziffern mit einem Punkt folgen und abschließend nochmals eine vierstellige Zahl.
Daher ein Datum in der Form TT.MM.JJJJ findet somit 18.09.1910
/.* [0-3][0-9]\.[0-1][0-9]\.\d{4} .* Hiermit werden nur Datumsangaben im Format TT.MM.JJJJ gefunden
findet somit 18.09.1910
/.* [0-9]{1,2}\.[0-9]{1,2}\.[0-9]{2,4} .*
Hier werden Daten gefunden wie 1.1.2000 10.05.1965 4.10.4570 10.5.65 1.3.12
Vor dem ersten und zweiten Punkt sind jeweils 2-stellige Zahlen erlaubt, nach dem letzten Punkt sind es mindestens zwei, höchstens vier.
/.* \d\d\d\d-\d\d-\d\d .* Hiermit werden nur Datumsangaben im Format JJJJ-MM-TT gefunden
/.* \d{4}-[0-1][0-9]-[0-3][0-9] .*
findet somit 2017-06-29/.* \w\w, \d\d \w\w\w \d\d\d\d .* sucht nach Leerzeichen dann 2 alphanumerischen Zeichen mit einem Komma, ein Leerzeichen, zwei Ziffern, wieder drei alphanumerischen Zeichen mit ein Leerzeichen und abschließend eine v4-stellige Zahl und Leerzeichen
Auch das sieht nach einem Datum aus, aber in der anglo-amerikanischen Schreibweise:
Di, 19 Feb 2002 - es erkennt nur Daten mit 2-stel. Wochentag und Tageszahl.
/.* .. \[[0-9]\]: .* sucht nach zwei x-beliebigen Zeichen auf die ein Leerzeichen und eine geöffnete eckige Klammer folgt.
Als nächstes wird die eckige Klammer nicht mehr von einem Backslash begleitet, hier beginnt also eine Zeichengruppe.
In dieser Zeichengruppe sind alle Ziffern von 0 bis 9 erlaubt.
Nach der Ziffer soll eine geschlossene eckige Klammer und ein Doppelpunkt folgen.
findet somit Re [2]:
/.* Re \[\d\]: .* sucht also einen String nach der Zeichenkette Re gefolgt von einem Leerzeichen, einer öffnenden eckigen Klammer, einer beliebigen Ziffer und einer schließenden eckigen Klammer mit einem Doppelpunkt als Abschluss. findet somit Re [2]:
/.* .. \([0-9]\) .* findet somit Dm 130 mm (2) Foto Tel. + 43 (0)7242 ...
/.* [A-Z]{4} .* es werden 4-Zeichen gefunden, die nur aus Großbuchstaben bestehen darf.
Warum an dieser Stelle eigentlich kein "\w"? Nun, das würde auch Unterstriche beinhalten, was ggf. ungewünscht ist.
findet somit NTFS DELL ARGE CMOS EXOR FOTO MIMO PROM UMTS WLAN WIFI JFET MENU
(?Modifikator)
(?i) (?m) (?s) (?i-s)
Schalter zum Setzen oder Ausschalten von Modifikationen zur Mustererkennung.
Durch Aufführen eines Modifikators wird dieser eingeschaltet.
Ein Minus-Zeichen davor schaltet ihn aus.
Es dürfen mehrere Modifikatoren gleichzeitig eingetragen sein (?i-s)
i ignoriert Groß-/Kleinschreibung
m betrachtet den String als mehrzeilig, ^ und $ erkennen jedes Newline-Zeichen in der Zeichenkette s betrachtet den String als einzeilig, der Punkt erkennt auch im String befindliche Newline-Zeichen x ermöglicht Kommentare und zusätzliche Whitespaces im Muster, die nicht erkannt werden. Leerzeichen müssen ggf. mit Backslash maskiert werden A fixiert das Suchpattern an den Anfang der Zeichenkette. D findet "$" nur noch am Ende der Zeichenkette, wenn das letzte Zeichen dort ein Zeilenumbruch ist. Andere, vorhergehende Umbrüche werden ignoriert. U kehrt die Standardeinstellung für Gierigkeit der Quantifzierer um: Quantifizierer sind nie gierig, es sei denn sie werden von einem Fragezeichen gefolgt. u Suchstring wird als UTF-8 interpretiert. X Zeichen, die keine Metazeichenbedeutung haben und mit einem Backslash maskiert werden, führen zu einem Fehler. e Evaluierung von Backreferences oder Substitutionen als PHP-Code (nur in preg_replace verwendbar) S zusätzliche Analyse des Suchpatterns zur Beschleunigung bei häufiger Verwendung des Regex.
Die folgenden Optionen müssen am Anfang eines regulären Ausdrucks stehen, gefolgt von einer runden Endklammer.
Wenn keine Optionen vorhanden sind, kann diese Klammer weggelassen werden. Z
https://ahkde.github.io/docs/misc/RegEx-QuickRef.htm
im)abc würde nach abc suchen, wo die Groß-/Kleinschreibung egal ist und die Suche über mehrere Zeilen erfolgt.
Im Vergleich zu anderen Programmiersprachen ist diese Schreibweise ziemlich ungewöhnlich.
Sie hat aber den Vorteil, dass keine speziellen Trennzeichen (z. B. der Schrägstrich) notwendig sind, um einen regulären Ausdruck von einem normalen Text zu unterscheiden, und demzufolge solche Trennzeichen innerhalb des Musters nicht mit einem Escapezeichen versehen werden müssen.
Darüber hinaus sind die Optionen mit dieser Schreibweise einfacher vom Programm zu parsen, was sich positiv auf die Performance auswirkt.
i Groß- als auch Kleinbuchstaben Wenn diese Option aktiv ist, stimmen Buchstaben im Suchmuster sowohl mit Groß- als auch Kleinbuchstaben überein. m Multiline-Modus.
Die zu durchsuchende Zeichenkette wird nicht als durchgehende Zeile, sondern als
Ansammlung einzelner Zeilen angesehen (sofern Zeilenumbrüche enthalten sind). Folgende Änderungen treten dabei in Kraft: 1) Zirkumflex (^)
ist nicht nur der Anfang der Zeichenkette, sondern auch der Anfang jeder neuen Zeile, also direkt nach jedem Zeilenumbruch (aber nicht nach einem Zeilenumbruch ganz am Ende der Zeichenkette).
2) Dollar-Zeichen ($)
ist nicht nur das Ende der Zeichenkette, sondern auch das Ende jeder neuen Zeile, also direkt vor jedem Zeilenumbruch.
m)^abc$" kann nur mit der Zeichenkette "xyz`r`nabc" übereinstimmen, wenn die "m"-Option vorhanden ist. Die "D"-Option wird ignoriert, wenn "m" vorhanden ist. s DotAll-Modus.
Bewirkt, dass ein Punkt (.) mit allen Zeichen übereinstimmt, einschließlich Zeilenumbrüche (normalerweise stimmt er nicht mit Zeilenumbrüchen überein).
Beachten Sie, dass ein Zeilenumbruch üblicherweise aus zwei Zeichen besteht (`r`n), demzufolge sind zwei Punkte für eine Übereinstimmung erforderlich.
Diese Option hat keinen Einfluss auf negative Klassen wie z. B. [^a] - diese Art von Klassen stimmen immer mit Zeilenumbrüchen überein.
x Leerzeichen Wenn diese Option aktiv ist, werden Leerraumzeichen im regulären Ausdruck ignoriert, es sei denn, sie haben ein Escapezeichen davor oder befinden sich in einer Zeichenklasse.
Die Zeichen `n und `t werden auch ignoriert, weil sie in einem regulären Ausdruck bereits als normale Leerraumzeichen behandelt werden
(im Gegensatz zu \n und \t, die PCRE-Escapesequenzen sind).
Die x-Option ignoriert zudem Zeichen außerhalb einer Zeichenklasse, die sich zwischen einer Raute (#) ohne Escapezeichen und einem Zeilenumbruchszeichen befinden.
Auf diese Weise kann man Kommentare in ein kompliziertes Muster einfügen.
Beachten Sie aber, dass dies nur für Datenzeichen gilt. Leerraumzeichen dürfen niemals innerhalb einer Folge spezieller Zeichen auftreten, wie
z.B. (?(, die einen bedingten Teilausdruck einleiten würde.
A Erzwingt die Verankerung des Suchmusters; das heißt, dass das Suchmuster mit dem Anfang der Zeichenkette übereinstimmen muss.
Diese Option ist prinzipiell das gleiche wie, als würde man das Suchmuster explizit mit "^" verankern.
D Bewirkt, dass das Dollar-Zeichen ($) mit dem Ende der Zeichenkette übereinstimmen muss, selbst wenn das letzte Zeichen in der Zeichenkette ein Zeilenumbruch ist.
Wenn diese Option nicht vorhanden ist, erfolgt die Übereinstimmung vor dem letzten Zeilenumbruch (falls vorhanden).
Hinweis: Diese Option wird ignoriert, wenn "m" vorhanden ist.
J Erlaubt benannte Teilsuchmuster mit gleichem Namen.
Diese Option ist in einem Suchmuster nützlich, wo nur eines von mehreren gleichnamigen Teilsuchmustern übereinstimmen kann.
Hinweis: Wenn mehrere gleichnamige Teilsuchmuster eine Übereinstimmung finden, wird nur der gefundene Treffer ganz links gespeichert.
Groß-/Kleinschreibung spielt bei Variablennamen keine Rolle.
U Ungreedy-Modus.
Bringt die Quantoren *+?{} dazu, so wenig Zeichen wie möglich zu verbrauchen, um einen Treffer zu erzeugen.
Die restlichen noch verfügbaren Zeichen gelten für den nächsten Teil des Suchmusters.
Normalerweise kann man, wenn die U-Option inaktiv ist, einen einzelnen Quantor ungreedy machen, indem man direkt danach ein Fragezeichen einfügt.
Bei aktivierter U-Option bewirkt das Fragezeichen genau das Gegenteil - es macht einen einzelnen Quantor greedy.
X PCRE_EXTRA.
Aktiviert PCRE-Features, die mit Perl nicht kompatibel sind.
Aktuell gibt es nur ein Feature.
Dieses Feature bewirkt, dass jeder umgekehrter Schrägstrich, gefolgt von einem Buchstaben ohne besondere Bedeutung, eine Übereinstimmung fehlschlagen lässt, woraufhin ErrorLevel gesetzt wird.
Mit dieser Option können ungenutzte Backslash-Sequenzen für die zukünftige Verwendung reserviert werden.
Wenn diese Option fehlt, wird der umgekehrte Schrägstrich vor einem normalen Buchstaben einfach ignoriert (das heißt beispielsweise, dass sowohl \g als auch g ein normales g ist).
Der umgekehrte Schrägstrich vor einem normalen nicht-alphabetischen Zeichen wird immer ignoriert (das heißt beispielsweise, dass sowohl \/ als auch / ein gewöhnlicher Schrägstrich ist).
P Positionsmodus.
Wenn diese Option aktiv ist, wird RegExMatch() nicht die gefundenen Teilzeichenketten, sondern die Position und Länge der gefundenen Übereinstimmung und ihrer Teilsuchmuster zurückgeben.
Für weitere Details, siehe AusgabeVar. S Untersucht, ob die Performance des Suchmusters verbessert werden kann.
Diese Option ist bei einem Suchmuster nützlich, das sehr oft ausgeführt wird (besonders wenn es komplex aufgebaut ist).
Wenn PCRE einen Weg gefunden hat, die Performance zu verbessern, wird PCRE diese Entdeckung zusammen mit dem Suchmuster in den Cache speichern, um sie später auf nachfolgende Suchmuster gleicher Art anzuwenden
(auch diese Suchmuster sollten die S-Option enthalten, weil sie nur im Cache gefunden werden können, wenn die Optionsbuchstaben vorhanden und in gleicher Reihenfolge sind). C Aktiviert den Auto-Callout-Modus.
Siehe Callouts in regulären Ausdrücken für weitere Informationen.
`n Wechselt vom Standard-Zeilenumbruch (`r`n) auf ein einzelnes LF-Zeichen (`n), welches üblicherweise auf UNIX-Systemen von Bedeutung ist.
Ein anderes Zeilenumbruchszeichen beeinflusst das Verhalten von Verankerungen (^ und $) und Suchmuster mit Punkten.
`r
Wechselt vom Standard-Zeilenumbruch (`r`n) auf ein einzelnes CR-Zeichen (`r).
`a [v1.0.46.06+]:
`a erkennt jede Art von Zeilenumbruch, konkret `r, `n, `r`n, `v/VT/vertical tab/chr(0xB),
`f/FF/formfeed/chr(0xC) und NEL/next-line/chr(0x85).
[v1.0.47.05+]:
Um Zeilenumbrüche nur auf CR, LF und CRLF zu beschränken, gibt man stattdessen (*ANYCRLF) in Großbuchstaben am Anfang eines Suchmusters an (nach den Optionen); zum Beispiel: im)(*ANYCRLF)^abc$ .
********************************************************I* Beispiele regulärer Ausdrücke RegExp
https://www.strassenprogrammierer.de/regular-expression-regex-praxis_tipp_597.html
Einfache Dateinamenspezifikation § LM555_1a.doc
/.* [a-z].*eiten\)_1a\.pdf .* 10 Dokumente
/.* [a-z].*eiten\)_1a.pdf 224 Dokumente Dieser reguläre Ausdruck beschreibt einen beliebigen Namen, der mit einem Kleinbuchstaben beginnt, und .pdf als Dateinamenerweiterung aufweist. Starter Kit for Arduino (ARDX) $ 67,99 - - 303_d_arduino-x_keyestudio Basic Starter Kit for Arduino UNO - Guide engl. (109 Seiten)_1a.pdf- - 303_d_arduino-x_oomlout ARDX Experimenter's Guide for Arduino UNO - Guide engl. (36 Seiten)_1a.pdf - - http://ardx.org/src/
Was beginnt da mit einem Kleinbuchstaben ???
Ziffernmuster erkennen
Sie möchten Zahlen zwischen 1 und 99 in einem Text finden. Dann probieren Sie es mit diesem Ausdruck:
/.* \b[0-9]?[0-9]\b .*
Die beiden \b kennen Sie bereits (Wortgrenzen Anfang...Wortgr. Ende).
Sie sorgen dafür, dass wirklich nur ein- und 2-stellige Zahlen gefunden werden.
Anderenfalls würde der Ausdruck auch in Zahlenreihen wie 12345 mehrfach fündig.
Auch die eckige Klammer kennen Sie bereits: Sie stellt mehrere Alternativen zur Verfügung.
Damit alle Ziffern von 0 bis 9 zutreffen, müsste hier eigentlich stehen: [0123456789].
Zum Glück dürfen Sie das abkürzen, eben auf [0-9].
Der erste Teil des Ausdrucks [0-9]? liest sich also: Eine Ziffer von 0 bis 9 darf 1-mal oder 0-mal vorkommen.
Danach muss eine zweite Ziffer folgen.
Der Ausdruck lässt sich aber noch geschickter schreiben, indem Sie Quantifizierer benutzen.
Die bestimmen, wie oft das zuvor geschriebene Muster zutreffen darf. Probieren Sie es mit
/.* \b[0-9]{1,2}\b .* Die beiden Zahlen in den geschweiften Klammern geben an, wie oft ein Muster mindestens vorkommen muss und wie oft es höchstens vorkommen darf.
In diesem Beispiel verlangt der Ausdruck also mindestens eine Ziffer zwischen 0 und 9 und erlaubt maximal zwei Stellen.
Überprüfung der Postleitzahl Möchten wir überprüfen ob eine Eingabe eine (deutsche) Postleitzahl ist, so sähe ein möglicher Ausdruckt wie folgt aus:
/.* ^[0-9]{5}$ .* geht nicht ?
Durch das ^ und das $ stellen wir sicher, dass nur die angegeben Zeichen vorkommen dürfen.
Mit [0-9]{5} erlauben wir dann alle 5 stelligen Zahlen.
Die 00000 würde hier leider auch erlaubt werden, obwohl es keine gültige PLZ ist.
/.* D-[0-9]{5} .* gefunden wird D-58513 Lüdenscheid 290 Dokumente
/.* A-4[0-9]{3} .* gefunden wird A-4600 Wels 481 Dokumente
Wenn Sie zum Beispiel nach vierstelligen Ziffern suchen, etwa in /.* \b[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{2,4}\b .* findet somit 1.3.12 15.08.2005 3.98.30 7.2.431 7.2.01 8.0.4811 Hier werden Daten gefunden wie: 1.1.2000 10.05.1965 10.5.65.
Vor dem ersten und zweiten Punkt sind jeweils zweistellige Ziffern erlaubt, nach dem letzten Punkt sind es mindestens zwei, höchstens vier.
Überprüfung der Telefonnummer
/ Startet die RegEx suche
.* vor dem Suchbegriff beliebige Zeichen +43 Landesvorwahl Österreich und Leer-Zeichen \ entwertet Metazeichen \( und \) ist hässlich und kann die Dinge verwirrend. [ ] besser der Gebrauch von Klammern [(] und [)] . \s? nach dem Nuller ein Leerzeichen oder keines [\s] oder \s? wenn man möchten, dass dies optional sein, setzen Sie einen ? nach. \s?[/]\s? einen slash suchen, geben Sie [/] optional noch \s? Ev. setzen Sie Klammern um die Optionen: [-.\s/] benötigen einen Bindestrich, Punkt oder Leerzeichen Slasch. Optional ein ? Fragezeichen \d{5} benötigt eine 5-stel. Zahl: 00000-99999, die Kurzform für [0-9][0-9][0-9][0-9][0-9] [0-9]{3-6} erfordert eine Ziffer 0-9 und eine 3- bis 5-stel. Zahl (\+|\-|\.|\s|\/) Akzeptieren Sie ein "plus" oder ein oder einen . oder ein Leerzeichen oder einen slash (pipe-Zeichen | bedeutet ODER). Die Meta-Zeichen Zeichen müssen escaped \ werden. Welser Tel.-Nr.
Vorwahl 0043 = +43
Tel. 0650 / 3788495 tele.ring
Tel. 0660 / 3788495 3 Hutchion Drei Austria
Tel. 0664 / 3788495 A1 Telekom Austria
Tel. 0676 / 378 8491 T-Mobile Austria
Tel. 0677 / 3788 492 HoT HOFER Telekom
Tel. 0678 / 37 88 493 UPC mobile
Tel. 0680 / 37 88 493 bob
Tel. 0699 / 378 84 94 yess!
/.*0664.* findet 84 Dokumente
Sie suchen alle E-Mail-Adressen der Domains yahoo.com, hotmail.com und gmail.com.
/.*(\W|^)[\w.\-]{0,25}@(yahoo|hotmail|gmail)\.com(\W|$) 3 Dokumente \W entspricht jedem Zeichen, das kein Buchstabe, keine Zahl und kein Unterstrich ist. So wird verhindert, dass der reguläre Ausdruck Zeichen vor und nach der E-Mail-Adresse sucht.^ entspricht dem Anfang einer neuen Zeile. Der reguläre Ausdruck entspricht der Adresse, wenn sie am Zeilenanfang steht und keine Zeichen vor ihr stehen. $ entspricht dem Ende einer Zeile. Der reguläre Ausdruck entspricht der Adresse, wenn sie am Zeilenende steht und keine Zeichen nach ihr stehen. [\w.\-] entspricht einem beliebigen Wortzeichen (az, AZ, 0-9 oder einem Unterstrich), einem Punkt oder einem Bindestrich. Dies sind die am häufigsten verwendeten gültigen Zeichen im ersten Teil einer E-Mail-Adresse. \- steht für einen Bindestrich und muss in der Zeichenliste innerhalb der eckigen Klammern ganz hinten stehen. \ v or dem Gedankenstrich und dem Punkt "maskiert" diese Zeichen, d. h. zeigt an, dass der Gedankenstrich und der Punkt selbst keine Sonderzeichen des regulären Ausdrucks sind. Der Punkt in den eckigen Klammern muss nicht maskiert werden. {0,25} zeigt an, dass 0 bis 25 Zeichen im vorherigen Zeichensatz vor dem Zeichen @ stehen können. Die E-Mail-Einstellung für die Inhaltscompliance unterstützt die Suche nach bis zu 25 Zeichen für jeden Zeichensatz in einem regulären Ausdruck. () Die Formatierung () gruppiert die Domains und das Zeichen | das die Domains trennt, steht für ein "oder".
/.*@(yahoo|hotmail|gmail)\.com.*
Für dieses Beispiel wird angenommen, dass alle E-Mail Adressen als Platzhalter-Tags behandelt werden sollen. Eine Beispiel E-Mail Adresse ist: [email protected]
Ein möglicher (nicht perfekter) Ausdruck für eine E-Mail-Adresse ist: Wortzeichen, Punkte und Trennstrich @ Wortzeichen, Trennstriche und Punkte Ein einfacher, entsprechender regulärer Ausdruck ist: /.*[\w\-\.]+@[\w\-\.]+.* 3.038 Dokumente
Mail-Adressen suche
/.*([a-z]|[A-Z]|[0-9]|_|-|\.)+@([a-z]|[A-Z]|[0-9]|_|-)+\.([a-z]|[A-Z]|[0-9]|_|-|\.)+.* 2.979 Dokumente Als gültige Zeichen werden Klein-, Gross-Buchstaben, Ziffern, Unterstrich, Bindestrich und der Punkt akzeptiert. Der Ausdruck erwartet min. ein gültiges Zeichen vor dem zwingenden Affenschwanz @. Nach dem Klammeraffe-Symbol muss min. ein gültiges Zeichen (ausgenommen der Punkt) vor einem zwingenden Punkt kommen.
Nach dem Punkt muss mindestens ein gültiges Zeichen kommen.
/.*[a-z0-9-_\.]+@[a-z0-9-_\.]+\.\w{2,3}.* matcht E-Mail Adressen 2.944 Dokumente
/.*mailto:.* 2.745 Dokumente
/.*mailto:[a-zA-Z0-9]{5,15}@[a-zA-Z0-9]{5,15}.at.*
519 Dokumente
Prüfung auf korrekte E-Mailadressen-Syntax
/.*[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}.* matcht E-Mail Adressen 2.976 Dokumente
Dieses RegEx trifft auf 99% aller gängigen Mail-Adressen zu. http://regexlib.com/Search.aspx?k=&c=5&m=-1&ps=100
Suche nach Uhrzeit im 12h-Format kein AM/PM: hh:mm 09:44
/.* (0\d|1[012]|\d):([0-5]?\d).* 196 Dokumente
[0-2][0-3]:[0-5][0-9] Suche nach Uhrzeit im 12h-Format: 11:59 /.*(1[012]|[1-9]):[0-5][0-9] (am|pm).* findet 13:00 am 1 Dokumente
/.* (1[012]|[1-9]):[0-5][0-9].* findet 13:00 206 Dokumente
Suche nach Uhrzeit im 24h-Format: hh:mm 23:59
/.* ([01]?\d|2[0-3]):([0-5]?\d).* 240 Dokumente
/.* ([0-1][0-9]|[2][0-3]):([0-5][0-9]).* 135 Dokumente
(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]
([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9] ([0-1]?[0-9]|[2][0-3]):([0-5][0-9])(:[0-5][0-9])? Suche nach Uhrzeit 24h mit Sekunden: hh:mm:ss 23:59:59
/.* ([01]?\d|2[0-3]):([0-5]?\d):([0-5]?\d).* 3 Dokumente
(?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d)
Suche nach E-Mails
/.*[a-zA-Z][a-zA-Z0-9]+@[a-z][a-zA-Z0-9]+.[a-z]{2,5}.* matcht E-Mail Adressen 2.908 Dokumente
Zahlen (mit Vorzeichen und Dezimalpunkt) suchen: /.*-?[0-9]*\.?[0-9]* ist suboptimal,
statt dessen
/.* -?([0-9]+(\.[0-9]*)?|\.[0-9]+) .* 15,232 Dokumente (es wird jedoch auch ein Datum wie z.B. 20.9.1978 gefunden)
Sie suchen alle IP-Adressen im Bereich 192.168.1.0 bis 192.168.1.255.
/.* 192\.168\.1\..*
/.* 192\.168\.1\.\d{1,3} .*
\ vor jedem Punkt "maskiert" den Punkt, d. h. zeigt an, dass der Punkt selbst kein Sonderzeichen des regulären Ausdrucks ist. In Beispiel 1
stehen nach dem letzten Punkt keine Zeichen, sodass der reguläre Ausdruck jeder IP-Adresse entspricht, die mit 192.168.1. beginnt, unabhängig von der danach stehenden Zahl.
In Beispiel 2
entspricht \d jeder Zahl von 0 bis 9, die nach dem letzten Punkt steht, und {1,3} zeigt an, dass die Zahlen von 1 bis 3 nach diesem letzten Punkt stehen können. In diesem Fall sucht der reguläre Ausdruck jede vollständige IP-Adresse, die mit 192.168.1. beginnt. Dieser reguläre Ausdruck findet auch ungültige IP-Adressen wie 192.168.1.999.
möglichst exakt nach IP-Adressen (z.B.192.168.17.4) zu suchen findet alle Zahlen mit 3 Punkten
/.* \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} .* findetGreenshot 1.2.8.12
bessser
/.* \d{3}\.\d{3}\.\d{2,3}\.\d{1,3} .*
http://www.google.com https://www.google.com http://google.com
https://google.com
https://www.aerzteblatt.de
/.* (http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?.*
/.* (http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z]*\.de .* 171 Dokumente
geht nicht
Wie kann man mit RegEx suche 2 Suchbegriffe suchen
z.B. pr82-??-?? AND ???-praktiker verknüpfen ! Die RegEx Suche sucht immer GENAU d.h. du kannst suchen nach /.* pr82-..-.. .* ...-praktikerwenn das praktiker NACH dem pr82 steht, ansonsten musst den praktiker-teil VOR den pr82 teil schreiben oder 2 Suchen ausführen einmal so und einmal so
Sie suchen die Wortgruppe Fritz Ptrenninger
/.*(\W|^)Fritz\sPrenninger(\W|$).* 23 Dokumente
\W entspricht jedem Zeichen, das kein Buchstabe, keine Zahl und kein Unterstrich ist.
\s ist ein Leerzeichen
So wird verhindert, dass der reguläre Ausdruck Zeichen vor und nach der Wortgruppe sucht.
(\W|^)stock\s{0,3}tips(\W|$) \s entspricht einem Leerzeichen und {0,3} zeigt an, dass 0 bis 3 Leerzeichen zwischen den Wörtern stock und tip stehen können. ^ entspricht dem Anfang einer neuen Zeile. Der reguläre Ausdruck entspricht der Wortgruppe, wenn sie am Zeilenanfang steht und keine Zeichen vor ihr stehen. $ entspricht dem Ende einer Zeile. Der reguläre Ausdruck entspricht der Wortgruppe, wenn sie am Zeilenende steht und keine Zeichen nach ihr stehen.
/.*[a-zA-Z]\s\s\s[a-zA-Z]
(\W|^)stock\s{0,3}tip(s){0,1}(\W|$)
\s Leerzeichen kann 0..3x vorkommen
entspricht (s) dem Buchstaben s und {0,1} zeigt an, dass der Buchstabe 0- oder 1-mal nach dem Wort "tip" stehen kann.
Der reguläre Ausdruck entspricht also stock tip und stock tips.
Sie können auch das Zeichen ? anstelle von {0,1} verwenden.
elektor elex AATiS praktiker ELV
/.*(?i)(\W|^)(elektor|elex|AATiS|praktiker|ELV)(\W|$) 76 Dokumente
(?i) sorgt dafür, dass beim Abgleich des Inhalts die Groß-/Kleinschreibung nicht berücksichtigt wird. \W entspricht jedem Zeichen, das kein Buchstabe, keine Zahl und kein Unterstrich ist.
So wird verhindert, dass der reguläre Ausdruck Zeichen vor und nach den Wörtern bzw. Wortgruppen sucht.
^ entspricht dem Anfang einer neuen Zeile. Der reguläre Ausdruck entspricht dem Wort, wenn es am Zeilenanfang steht und keine Zeichen vor ihm stehen. $ entspricht dem Ende einer Zeile. Der reguläre Ausdruck entspricht dem Wort, wenn es am Zeilenende steht und keine Zeichen nach ihm stehen. | steht für ODER , damit der reguläre Ausdruck jedem einzelnen Wort in der Liste entspricht. \s entspricht einem Leerzeichen. Verwenden Sie dieses Zeichen, um Wörter einer Wortgruppe zu trennen. Beispiele regulärer Ausdrücke https://support.google.com/a/answer/1371417?hl=de
Jahreszahl 2019
/.*(19\d{2}|20\d{2}) Mit diesem RegEx Beispiel kann die Eingabe einer Jahreszahl zwischen 1900 und 2099 überprüft werden.
Datum2016-06-13
/.*(0?[1-9]|[12][0-9]|3[01])[- /.](0?[1-9]|1[012])[- /.](19|20)?[\d]{2} 229 Dokumente Mit diesem RegEx Beispiel kann die Eingabe eines Datums überprüft werden.
Das Datumsformat kann dabei 1- oder 2-stellige Tages und Monatsangaben
wie auch 2- oder 4-stellige Jahresangaben zwischen 1900 und 2099 prüfen.
Als Trennung werden Bindestrich, Leerzeichen und Punkt zugelassen.
findet 2016-06-13 05-07-96 pr84-06-08 1986-3-50 07.06.2018 V6.9.12
Postleitzahl D-12345
/.* D-[0-9]{5}.*
Mit diesem RegEx Beispiel kann die Eingabe einer Postleitzahl überprüft werden, die in Deutschland immer fünfstellig ist und den Zahlenraum von 0 bis 9 belegt. IP-Adresse 192.168.0.255
/.* ((\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5]).*
Mit diesem RegEx Beispiel kann die Übergabe einer IP Adresse auf Plausibilität überprüft werden.
Eine IP Adresse besteht aus 4 Ziffernblöcken getrennt durch einen Punkt, wobei jeder einzelne Ziffernblock die Ziffern von 0 bis 255 belegen kann.
E-Mail-Adresse
/.* ([a-zA-Z0-9][\w.-]*)@((?:[a-zA-ZüöäÜÖÄ0-9][\wüöäÜÖÄ.-]*\.)*[a-zA-ZüöäÜÖÄ0-9][\wüöäÜÖÄ._-]*\.[a-zA-Z]{2,}|((\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d{2}|2[0-4]\d|25[0-5]))
[email protected] [email protected] [email protected]
Mit diesem RegEx Beispiel kann die Übergabe einer E-Mail-Adresse mit falscher Syntax relativ zuverlässig überprüft werden.
Eine E-Mail-Adresse mit gültiger Syntax ist jedoch nicht zwingend auch eine gültige E-Mail-Adresse!
Eine E-Mail-Adresse besteht grundsätzlich aus einem Empfängernamen, dem Zeichen @ und dem Domainteil .at, der wiederum aus einer Subdomain und Domain oder IP-Adresse.
/.* Tel\. .* Telefonnummer Tel: +43 7273 6030-0 00 800 / 2314 4000
/.* Tel[\.|:|\.:]? ((((\+|[0]{2})\d{1,4} )(\(?([1-9]{1})([\d]{1,4}\)?)))|(\([1-9]{1}[\d]{1,4}\))|([0]{1}[\d]{1,5}))( [2-9]{1}[\d-?]{2,10}).*
#^((((\+|[0]{2})\d{1,4} )(\(?([1-9]{1})([\d]{1,4}\)?)))|(\([1-9]{1}[\d]{1,4}\))|([0]{1}[\d]{1,5}))( [2-9]{1}[\d-?]{2,10})$#
In diesem RegEx Beispiel wurden die beiden zuvor erläuterten Beispiele verknüpft, sodass die Übergabe einer kompletten Telefonnummer inklusiv Länderkennzahl und Ortsnetzkennzahl auf Plausibilität überprüft werden.
Eine standardisierte Teilnehmerrufnummer hat mindestens 3 Ziffern und maximal 11 Ziffern.
Die Länge von Rufnummern im internationalen Telefonverkehr ist auf höchstens 15 Ziffern, einschließlich Ländercode (49), ausschließlich Verkehrsausscheidungsziffern (0), einschließlich Telefonvorwahl (40) und der Teilnehmerrufnummer festgelegt.
Dieses Beispiel, anhand der Google Telefonnummer, erlaubt die folgenden Eingaben:+49 (40) 80817-9000 +49 40 80817-9000 0049 (40) 80817-9000 0049 40 80817-9000 (40) 80817-9000
040 80817-9000
Jahreszahlen
/.* \d\d\.\d\d\.\d\d.*Er findet nur Daten, bei denen Tage und Monate und Jahre exakt mit zwei Ziffern angegeben sind. Daten mit einstelligen Tag- oder Monatsangaben findet er nicht, ebensowenig Daten mit vierstelligen Jahresangaben.
/.* \d(\d)?\.\d(\d)?\.\d\d(\d\d)?.* 173 Dokumente Sowohl zweistellige als auch vierstellige Jahreszahlen sind zulässig
/.* \d{1,2}\.\d{1,2}\.\d{2,4}.* 13.06.2013
173 Dokumente
Sowohl einstellige als auch zweistellige Tag- und Monatsangaben sind zulässig
/.* \d{2,4}-\d{1,2}-\d{1,2}.* 2016-06-13 173 Dokumente
Postleitzahlen
/.* A-[1-9][0-9]{3}.* 834 Dokumente A-7242
/.* D-[1-9][0-9]{4}.* 173 Dokumente D-58513
Beispiele für Reguläre Ausdrücke https://webdesign.tepelmann.com/PHP_Beispiele_fuer_Regulaere_Ausdruecke.html /.* (31|30|[012]\d|\d)\.(0\d|1[012]|\d)\.(19[789]\d|20[0123]\d).* Datum nicht genau Ein Datum besteht aus einem 1-2-stelligen Tag, einem 1-2-stelligen Monat und einem Jahr (2/4-stellig).
Gespeichert wird ein Datum ganz gerne als 32-Bit-Zahl, die die Sekunden seit 1.1.1970 angibt.
Dies kennt man gemeinhin von Unix so (1970 gilt als Start der Unix-Zeit).
Mit einer 32-Bit-Zahl ist man jedoch auch beschränkt auf Datums bis 2038, was dieser Ausdruck zum Ausdruck bringt:
/.* (31|30|[012]\d|\d)[./](0\d|1[012]|\d)[./](\d{4}|\d\d).* Datum 31.02.2033 /.* (0\d|1[012]|\d):([0-5]?\d).* 12h Uhrzeit 09:44 /.* ([01]?\d|2[0-3]):([0-5]?\d).* 24h Uhrzeit 22:44 /.* ([01]?\d|2[0-3]):([0-5]?\d):([0-5]?\d).* Sekundengenaue 24h Uhrzeit 22:44:59 /.* (ISBN:)? \d-\d{6}-\d\d-\d.* ISBN mit und ohne Literal "ISBN" davor: Hier ein Ausdruck zum Erkennen von ISB-Nummern der Art ISBN 3-925660-91-7 oder nur 3-925660-91-7.
10-stellig und 13-stellig Formate sehr unterschiedlich
ISBN: 3772367135
ISBN: 3-7723-6713-5
ISBN: 3-772-36713-X
ISBN 3-921803-24-1ISBN 3-92180-324-1 ISBN 978-90-5381-251-8 ISBN 978-9-053-81251-8
Reguläre Ausdrücke - eine Sammlung
http://www.koepferl.de/publikationen/regex.xhtml
Wiederholung a+ a 1-mal bis mehrmals
[+][1-9]{2}[ ][1-9][0-9]{1,3}[ ][1-9][0-9]+ [+] maskiertes +
([A-Za-z]+ )*[A-Za-z]+!?
RegExp (regular expressions)
Tutorial für blutige Anfänger Perl 5 verbreiteste Engine / Standard
- ASCII-Bereich kann mit - definiert werden: [ <Startzeichen> - <Endzeichen> ] = [a-zA-Z0-9]
Zeichen Bedeutung a? a kommt kein- oder einmal vor. a+ a kommt mindestens einmal vor. a* a kommt kein oder mehrmals vor. a{3} a kommt genau drei mal vor. a{3,} a kommt mindestens drei mal vor. a{,5} a kommt maximal fünf mal vor. a{3,5} a kommt mindestens drei, aber maximal fünf mal vor. ^a Die Zeichenkette beginnt mit einem Text der auf a passt ausdruck$ Die Zeichenkette endet mit einem Text der auf ausdruck passt ^ab$ Die Zeichenkette passt von Anfang bis Ende auf ab
. Beliebiges Zeichen
Beschreibung:
Der . entspricht einem beliebigen darstellbaren Zeichen (abhängig von den RegExOptions werden whitespace-Zeichen gefunden oder auch nicht)
. findet irgendein Zeichen außer Zeilenumbruch (. = [^\r\n])
.* findet eine komplette Zeile
Beispiel:
h.se findet "hase", "hose" oder auch "h9se"
h.s. findet "hass", "hast" oder "Schiss". Aber wieso "Schiss"? Ganz einfach, weil vor "h" oder nach dem letzten "s" kein Leerzeichen steht, dieser Suchausdruck kann auch innerhalb eines Wortes sein.
? 0 oder 1 Vorkommen
Beschreibung:
Der vorangehende Ausdruck kommt 0x (also gar nicht) oder 1x vor. a.* (<- am ende ein leerzeichen!!!) findet im String "a b c d" nur "a b c ", da logischerweise nach "d" kein leerzeichen kommt.Beispiel:
Mittels .* wird bis dahin gesucht, was nach dem "*" steht, steht da nichts, dann wird höchstens bis zum nächsten Zeilenumbruch gesucht.
ABER mit dem ? Zeichen wird nur bis zum >ERSTEN< Vorkommen des nächsten Zeichens gesucht, also was nach dem ? kommt.
Schreiben wir nun ein Fragezeichen dazu, also a.*? , so wird nur "a " gefunden, da nach diesem ja bereits schon das nächststehende Leerzeichen kommt.
Komischerweise scheint das mit dem "?" in der VB-Hilfe vergessen worden zu sein.
Also a.*? findet alle wörter die mit "a" anfangen, und bis dahin, wenn ein Leerzeichen kommt.
Im Text "Das ist mein RegEx-Tutorial fürs VB-Paradise Forum" würde mit dem eben genannten Suchausdruck "as ", "al " und "adise" gefunden werden.
Würden wir bei dem Suchmuster vor dem "a" auch noch ein Leerzeichen platzieren, so würden wir im eben beschriebenen Text nichts finden da dort kein wort mit "a" anfängt.
* 0 oder mehr Vorkommen
Beschreibung:
Findet 0 (null) oder mehr Vorkommen des vorangehenden Ausdrucks und ergibt somit alle möglichen Übereinstimmungen.
Beispiel:
"Han*es" findet "Hannes", "Hannnnnes" oder "Hannnnnnnnnnes" aber auch "Hanes" und sogar "Haes"(wie gesagt, möglich ist 0 oder mehrmals).
"Ha.*es" findet "Hannes", "Hastiges" oder "Haltendes" aber auch "Ha325!%es", da ja nicht festgelegt ist, welche Zeichen innerhalt des Wortes erlaubt sind, aber das kommt nachher noch alles mit "[" und "]".
Um ".*" mal in Worte zu fassen: Der Ausdruck sucht "Ha", wenn gefunden, wird alles was dann kommt ebenfalls positiv gematcht.
In dem Fall ".*" was soviel heißt wie "ein beliebiges Zeichen beliebig oft oder gar nicht".
Und am Ende dann irgendwann "es". Für den größeren Teil der Leser dieses Tuts wird es jetzt verwunderlich sein wenn Ich sage, dass damit auch "Ha123xyz!eseseseseseses" gefunden würde, wir haben nicht festgelegt, dass die Übereinstimmungssuche gleich beim ersten vorkommen von "es" enden soll.
Auch dafür gibt es eine Lösung, lest weiter, Ihr werdet wissen wann die Stelle kommt
+ 1 oder mehr Vorkommen Beschreibung:
Findet mindestens ein oder beliebig viele Vorkommen des vorangehenden Ausdrucks
Beispiel:
Im Gegensatz zu * würde bei Han+es zwar auch "Hanes" "Hannes" oder "Hannnnnnnes" und so gefunden werden, jedoch NICHT "Haes", da der Ausdruck mindestens einmal vorkommen muss
^Anfang des String / der Zeile Beschreibung:
Bezeichnet den Anfang eines Strings oder einer Zeile (je nach dem bei RegExOptions festgelegten Wert(en))
Beispiel:
^d Findet ein "d" nur, wenn es am Anfang des Strings steht, der Ausdruck ^.* findet Beispielsweise die erste Zeile des Strings bis zum Zeilenumbruch oder zum Textende, falls es nur eine Zeile ist.
$ Ende des String / der Zeile$ Beschreibung:
Bezeichnet das Ende eines Strings oder einer Zeile (je nach dem bei RegExOptions festgelegten Wert(en))
Beispiel:
Wie ^ nur dass es mit $ das Ende eines Strings ist. Wäre der zu durchsuchende String nun:
"Ich schreibe gerade einen Teststring" und würden wir nach ...$ suchen, so würden wir "ing" finden. \n Zeilenumbruch Beschreibung:
Findet Zeilenumbrüche
Beispiel:
Hier mal ein Test-text:
"Heute bin ich so motiviert, dass ich angefangen habe, ein Tutorial für das Forum zu schreiben." So, und wenn wir nun nach .\n. suchen würden, dann würden wir folgende Strings finden: "ot", "ha" und "um".
Suchen wir nach ^.*?\n so erhalten wir die komplette erste Zeile.
\s Leer-Zeichen Beschreibung:
Findet alle Whitespace-Zeichen (= nicht-anzeigbare Zeichen wie etwa Zeilenumbruch, Tab, Leerzeichen etc..)
Beispiel:
\s findet alle Zeichen die nicht dargestellt werden.
\t Tabulator-Zeichen Beschreibung:
Findet alle Tabulatoren-Zeichen
Beispiel: \t findet alle Zeichen die nicht dargestellt werden. [...] Beliebiges Zeichen in der Menge Beschreibung:
Findet eines der Zeichen, die in den eckigen Klammern enthalten sind.
Geben Sie zum Festlegen eines Bereichs von Zeichen das Start- und das Endzeichen durch einen Bindestrich (-) getrennt ein, wie in [a-z].
Beispiel:
"\sF[aeiou]s.*?\s" Findet Worte die mit "F" anfangen und danach einen Selbstlaut(also einen der Buchstaben in den eckigen klammern) haben bis zum nächsten Leerzeichen, also Beispielsweise " Fasan ", " Fussball " oder " Fasten ", gefoch nicht "Frisch", "Flug" oder "Franz", da hierbei nach dem "F" keiner der Buchstaben a,e,i,o oder u kommt(also keiner DIREKT nach dem "F") "[a-z0-9]" findet jedes (einzelne) Zeichen wenn es ein Buchstabe oder eine Zahl ist.
Mit dem "+" kann hierbei praktischerweise die Übereinstimmung fortgesetzt werden.
Im Text "In diesem Text kommen auch Zahlen vor, wie 1, 23, 300 oder 19" finden wir mit dem Suchmuster "\s[a-z ]+"
Beispielsweise vom Wort "dem" bis zu der Stelle an der die Zahlen anfangen, da zahlen im Alphabet nicht vorkommen(PS:
ab dem Wort "dem" deshalb, weil wir davor ein "\s" haben!!
Und noch eine Falle: wir haben nach dem "z" in "[a-z ]" ein Leerzeichen, hätten wir das nicht, würden wir NUR das wort "dem" finden, da Leerzeichen auch nicht im Alphabet enthalten sind! Immer gut aufpassen!).
Im Text "8723 das waren zahlen, hier kommen noch mehr: 876578345" finden wir mit dem suchmuster "^[0-9]+" nur den ersten Zahlenblock, da ab dem Leerzeichen abgebrochen wird, welches ja ebenfalls bei den Zahlen 0-9 nicht enthalten ist.
[^...] Beliebiges Zeichen nicht in der Menge Beschreibung:
Findet ein beliebiges Zeichen, das nicht im Satz von Zeichen nach ^ enthalten ist.
Die Bedeutung des ^ -Zeichens ist hier nicht mehr das Anfang des Strings/der Zeile.
Beispiel:
Ha[^nu]s findet "Hals" aber nicht "Hans" oder "Haus".
(...) Gruppierung Beschreibung:
Ermöglicht es Ihnen, einen Satz von Ausdrücken zu gruppieren.
Wenn du nach zwei verschiedenen Ausdrücken suchen magst, kannst du diese mit dem Gruppierungsausdruck kombinieren.
Beispiel:
([0-9][a-z])+ findet alle Zeichenfolgen, wenn abwechselnd eine Zahl und dann ein Buchstabe folgt.
Im String "3h4g9w2g6b5y0lzdh3j2q8f62441" würde gefunden werden: "3h4g9w2g6b5y0l" und "3j2q8f".
Oder leichter Dargestellt: Im String "0F0F0F0F0FFFFFF0F0F0F0000" würde gefunden werden: "0F0F0F0F0F" und "0F0F0F".
Mithilfe der Gruppierung kann man mehrere Ausdrücke einfach miteinander verketten.
Äußerst interessant sind gruppierte Ausdrücke wenn es später dann auch um's Ersetzen geht.
| ODER Beschreibung:
Findet entweder den Ausdruck vor oder nach dem Symbol |-Zeichen.
Wird meistens in einer Gruppe verwendet.
Beispiel:
(ab|ein|aus|um|allein)gang findet die Strings "abgang", "eingang", "ausgang", "umgang" und "alleingang".
Hierbei wird wird mit ODER gearbeitet, kommt also ein Ausdruck nicht vor, wird der nächste probiert.
Der Ausdruck ver(sau|ursach|schwende|damm)t findet "versaut", "verursacht", "verschwendet" und "verdammt". Ist logischerweise nicht wie ver[a-z]+t zu behandeln, da die Strings die zwischen "ver" und "t" stehen vorgegeben sind, und nicht beliebig auftauchen.
\ Escape-Zeichen Beschreibung:
Findet das Zeichen, das dem umgekehrten Schrägstrich \ als Literal folgt.
Damit kannst du Zeichen wie { und ^ suchen, die in der Notation normalerweise für reguläre Ausdrücke verwendet werden.
Beispiel:
Mit \. kann in einem Text nach dem Punkt als String gesucht werden. ..\$ findet beispielsweise nicht das Zeilenende, sondern den Text "ab$" oder "var$".
Der Ausdruck <.*?> findet alles was zwischen zwei "<>" steht, also beisp "<title>" oder "</body>".
Der Ausdruck \[.*?\] findet alles was zwischen zwei [ ] (eckigen Klammern) steht, also "[Wort]", "[autorun]" und so weiter.
Das \ vor "[" und "]" ist wichtig, damit die [] Zeichen als String erkannt werden können.
Das ist nötig bei jedem Zeichen, welches in der RegEx-Notation eine spezielle Bedeutung hat.
Also statt "+" nach \+ suchen, statt "/" ein "\/" oder statt "." ein "\.", naja ihr versteht schon.
{...} fest definierte Anzahl an Vorkommen Beschreibung:
Gibt an, wie of der vorangehende Ausdruck minimal, maximal oder minimal und maximal vorkommen darf.
Mögliche Zustände: [0-9]{4, 8} Mindestens 4 und höchstens 8 Zahlen nacheinander [0-9]{4,} Mindestens 4 Zahlen oder beliebig viele [0-9]{,8} Beliebig viele Zahlen, aber mindestens 8 [0-9]{5} Genau 5 Zahlen Beispiel:
[0-9]{4} findet alle Strings die nur aus Zahlen bestehen und vierstellig sind.
Findet beispielsweise "8932", "5897" und "2385" in "8932589723857".
Metazeichen sind . * ? + \ ^ $ | ( ) [ ] { }
Metazeichen müssen mit \. oder [.] maskiert werden Man kann alle Sonderzeichen bedenkenlos maskieren(VORSICHT: alphabetische Zeichen keinesfals maskieren ! ! ! ^ nur am Anfang - nur in der Mitte \a Bell (Piepser) \n Zeilenumbruch (newline) \r Zeilenumbruch (carriage return) \t Tabulator \v vertikaler Tabulator \e Escape \x00-\xFF Zeichen in Hexadecimal (ASCII) \cA-\cZ ASCII Kontrollzeichen \u0000-\uFFFF Zeichen in Hexadecimal (Unicode)
Vordefinierte Zeichenklassen:
\d [0-9] - Zahl \w [A-Za-z0-9_] - Wort \s [ \t\r\n] (auch: [ \t\r\n\v\f]) - Leerzeichen \s? mit oder ohne Leerzeichen \W [^\w] - kein Wort \S [^\s] - kein Leerzeichen
https://wwwlehre.dhbw-stuttgart.de/~vilas/RegExp.pdf
Will man nach einem Zeichen suchen, das in einem regulären Ausdruck eine Bedeutung hat, wie
z. B. [ oder ^, muss man einen Backslash (\) voranstellen.
Das nennt man „das Zeichen maskieren“. Um nach dem Backslash selbst zu suchen, entsprechend zweimal den Backslash.
Um nach Teilausdrücken zu suchen, ist also beispielsweise auch
In den Klammern können mit
regular Expressions Basics
Regular Expressions - oder, auf Deutsch, reguläre Ausdrücke - dienen dazu, einen Text auf bestimmte Zeichenfolgen zu überprüfen und diese dann - bei Bedarf - zu manipulieren.
Diese Suchbegriffe können durch die regexp-Syntax sehr variabel gehalten werden. Deswegen werde ich mich - zu Beginn - nur mit den reinen regexp beschäftigen. Regexp setzen sich zusammen aus Literalen und aus Metazeichen. Literale sind Buchstaben, auf die exakt geprüft werden soll und die Metazeichen bringen die Variablität rein. Ein Beispiel: Die regexp /abc/ besteht nur aus Literalen: sie schlägt nur bei abc zu, Abc zB wird ignoriert, da das große A nicht dem kleinen a entspricht. Die - für uns vorerst wichtigen - Metazeichen sind:
1.Allgemein:
2. Wildcards, Suchbereiche:
Sie werden direkt hinter der betroffenen Klammer bzw dem Punkt/Stern angegeben.
Es kann natürlich vorkommen, daß mit der regexp Zeichen gesucht werden, die innerhalb der regexp eine eigene Funktion haben ( Beispiel: . - der Punkt. ).
Diesen Zeichen wird durch einen vorgestellten Backslash (\. ) die Metazeichen-Funktion genommen und in ein ganz normales Literal umgewandelt.
********************************************************I*
schaltungen suchen mit RegExhttp://sites.schaltungen.at/elektronik/google-suche/schaltungen-suche
von mir gebaute Schaltungen +++
098_c_Print-Technik-x_Disco-Blinker (Schmuck) +++ (45x45mm) § ECM BC238 BC307_1a.pdf
RegEx suche geht nur im Eingabegfeld Suche und Text
geht nicht im Komponenten Suchfeld
elektor DVD 917_d_#93-12s64-x_936060-11 Drehzahlregler für 12V Bohrmaschinen § LM317 LM358 BC557_1a.pdf
im Komponenten Suchfeld #93-12s64-x /.*#92-\d\d-\d\ds\d\d-x .* RegEx geht da NICHT ! ! !
alle meine Bücher
750_a_Tabelle-x_Prenninger Elektronik Bücherliste-0528-05-22 (528 Elektronik-Bücher)_5a.xls
SUCHE nach
01) Jahr - Heft s Seite 2014-09s062 nicht ?????-??s??? sondern /.*[0-9]{4}-[0-9]{2}s[0-9]{2,3}.* 608 Dokumente
02) elektor
084_d_elePOST-x_Nr.16 130261-11 BASIC für PICs (2) I-O-Schaltungen PICAXE § PICAXE-08M2 4N25_1a.pdf
035_d_elektor-x_1994-12s030 Mikrocontroller-Lupe (Software 946203-1) _1a.zip
916_d_#89-2s68-x_894xx-11 Phasenverschiebung und Allpass (Grundlagenkurs Filter )_1a.pdf
elektor bis 1988 12345-11 nicht ?????-11 sondern /[0-9]{5}-11 .* ODER /\d\d\d\d\d-11 .* 1.333 Dokumente
elektor bis 1988 12345-11 nicht ?????-11 sondern /.*[0-9]{5}-11 .* ODER /.*\d\d\d\d\d-11 .* 4.769 Dokumente
elektor bis 1988 12345-11 nicht ?????-11 sondern /.* [0-9]{5}-11 .* ODER /.* \d\d\d\d\d-11 .* 26 Dokumente
elektor bis 1988 12345-11 nicht ?????-11 sondern /[0-9]{6}-11 .* ODER /\d{5,6}-11 .* 3.209 Dokumente
elektor bis 1988 12345-11 nicht ?????-11 sondern /.*[0-9]{6}-11 .* ODER /.*\d{5,6}-11 .* 3.394 Dokumente
elektor bis 1988 12345-11 nicht ?????-11 sondern /.* [0-9]{6}-11 .* ODER /.* \d{5,6}-11 .* 196 Dokumente
elektor ab 1988 123456-11 nicht ??????-11 sondern /.*[0-9]{5,6}-11 .* ODER /.* \d{5,6}-11 .* 4.769 Dokumente
elektor Heft#262 Heft#270, nicht Heft#??? sondern /.* Heft#[0-9]{1,3}.* 50 Dokumente
suche nach /.* Heft#[0-9]{1}.* findet Heft#05-06-70 50 Dokumente
das .* am Ende heißt IRGENDWAS ... d.h. es findet Heft#0 und die Ziffer 5 ist IRGENDWAS!du willst vermutlich /.* Heft#[0-9]-.* oder sowas - dann ist es nur 1 Ziffer und ein Bindestrich danach Tipp: Was ich glaub ich nicht erwähnt habe: mit ^ kann man eine Zeichenklasse negieren /.* Heft#[0-9][^0-9].* findet alles wo nach dem # 1 Ziffer ist und dann KEINE ZIFFER (irgendwas anderes) kommt dh ^ innerhalb von eckigen Klammern und gleich am Anfang negiert die Zeichenklasse ... [^abc] = kein a, kein b und kein c ^ außerhalb von eckigen Klammern steht für den Beginn des Textes ($ steht für das Ende)
elektor Scherzschaltungen 34 1992#26s045 /.*[0-9]{4}#[0-9]{2}s[0-9]{3} .*
506_b_7D-7Led-8T-0V_065107-11-- LärmMeßgerät, VU-Meter, Lautstärke-Anzeige BF245A BC337_1b.doc i-TRIXX elektor 06KW08-11-- nicht ??KW??-11-- /.*[0-9]{2}KW[0-9]{2}-11.* /.*\d\d\w\w\d\d-11.* /.*\d\dKW\d\d-11-- .*
i-TRIXX elektor 06KW08-11-- nicht ??KW??-11-- /.* [0-9]{2}KW[0-9]{2}-11 .* /.* \d\d\w\w\d\d-11 .* /.* \d\d\KW\d\d-11 .* geht NICHT da Leerzeichen und backslash vor K Das 06KW08-11 steht am anfang des titels und hat somit gar kein Leerzeichen davor aber auch keines dahinter
691_c_Appl.-z_Bd01-Tl1-$0016_1a.gif
676_d_Appl.-z_Bd.300-$028_1a.pdf
796_c_elektor-x_BUCH 300 Schaltungen Seite#048_1a.pdf
~679_c_Appl.-z_Bd.303-$031_1a.pdf
688_c_Appl.-z_Bd12-Tl0-$0010_1a.gif
10.000 Schaltungen Bd05-Tl0-$0128 nicht nach Bd05-Tl0-$???? sondern "Bd05-Tl0-$" geht /.* \w\w\d\d-Tl0-$[0-9]{4} .* geht NICHT da Leerzeichen und $
10.000 Schaltungen 05.88.15-en nicht nach 05.??.??-en sondern /.* [0-9]{2}.[0-9]{2}.[0-9]{2}-en .* geht NICHT !
535_b_3D-1IC-1U-4Dis-9V_192821-62 Digital LED Panelmeter, DVM-Modul 1mV bis 2kV HB333.1 +++ § ICL7107 CD4049 DS350PA_1a.pdf CONRAD 123456-62 nicht ??????-62 sondern /.* [0-9]{5,6}-62 .* ODER /.* \d{5,6}-11 .* ODER /.* ......-62 .* H-Tronic HB448 nicht HB??? sondern /.* HB[0-9]{3} .* oder /.* HB\d\d\d .* oder /.* H\w\d\d\d .* = z.B. HF385 HT614 HX711 HS485 HI201
ELO nach ELO kann nicht gesucht werden ! ~093_b_AATiS-x_AS016 LED-Großanzeige - Tipps_1a.doc AATiS-x AS123 nicht nach AS??? sondern /.* AS[0-9]{3} .* /.* AS\d\d\d .*
AATiS-x BB42 nicht nach BB?? sondern /.* BB[0-9]{2} .* /.* BB\d\d .* VHS-Kuse gehalten von Prenninger 496_b_Text-x_VHS6.3.07 Messfehlerschaltung, Stromfehlerschaltung, Spannungsfehlerschaltung_1a.doc VHS-Kuse VHS6.3.07 nicht VHS?.?.?? sondern ASIC-Solar 999_d_ASIC-x_solarguide (Solaranlage) - 10 Ausschreibung_1a.pdf
print & technik
998_a_Katalog-x_Pr-Te154-00 Print-Technik KATALOG 1988-10 (Bausätze und Bauteile)_1a.pdf
ITM-praktiker 858_c_2T-4IC-9V_pr86-22-06 tea timer, Kurzzeitschalter (5sec. bis 2h) NE555 BD676 BC549_1a.pdf praktiker pr82-01-08, ITM-praktiker nicht nach pr82-??-?? sondern /.*pr[0-9]{2}-[0-9]{2}-[0-9]{2}.* /.* pr\d\d-\d\d-\d\d.* 781 Dokumente
865_b_3Sch-2Pot-2T-1Ls-1U-1,5V_1986-2-22 UM3482 Melodien-Generator_1a.pdf
931_b_EAM-x_Drehzahlermittlung mit dem C-64 für den Lichtgriffel_1a.pdf
E-A-M-print 1986-2-22 nicht 1986-?-?? sondern /.* \d{4}-\d-\d\d .* E-A-M = H-Tronic HB448 oder HB448,
elrad
x955_b_elrad-x_elrad.1985-01 (090 Seiten)_1a.pdf
955_b_elrad-x_elr.85-11s58 Mikrofon-Fader mit dem VCA-Modul_1a.pdf
elr.85-11s58 nicht 85-11s58 sondern /.*elr.[0-9]{2}-[0-9]{2}s[0-9]{2,3} .* ELRAD spezial 955_b_elrad-x_spe-4.051 Morse-Piepmatz 555 und Lautspr. (Der Morse Code) _1a.pdf
elrad-x spe-5.093 nicht nach spe-?.??? sondern /.*spe-[0-9]{1}.[0-9]{3} .* oder /.*spe-\d.\d\d\d .* oder /.*spe-\d.[0-9]{3} .*
KEMO ~615_b_2Pot-1D-1IC-6V_#B224 Laser-Show mit 2 Spiegelmotoren, Lissajous-Figuren_1b.doc
~635_b_1Xen-1Pot-1Dia-1Thy-1Tr-230V_#B025 U-Stroboskop_1b.doc
Kemo #B191 nicht nach #B??? sondern /.*#B[0-9]{3} .* oder /.*#B\d\d\d .*
Kemo #M191 nicht nach #M??? sondern /.*#M[0-9]{3} .* oder /.*#M\d\d\d .*
Velleman
823_c_7D-1T-1IC-1Ls-9V_K6600-de SAE800 Drei-Ton-Gong, Türklingel mit Dreiklang_1a.pdf
286_c_1D-1Led-1T-20V_K7302-de BD135 einfaches Ladegerät NiCd, NiMH, 50..400mA, 1..10 Zellen_1a.doc
~770_c_velleman-x_manual K4001-de Verstärker 7W_1a.doc
~771_d_VELLEMAN-x_MK136-en Super Stereo Kopfhörer_1a.pdf
566_b_2Led-1D-1Pot-1Sch-2T-9V_MK105-de NE555 1kHz SIGNALGENERATOR, Sinus, Dreieck, Rechteck_1b.doc
Velleman K1234 nicht nach K???? sondern /.*K[0-9]{4} .* oder /.*K\d\d\d\d .*
Velleman K8075-de nicht nach K????-de sondern /.*K[0-9]{4}-de .* oder /.*K\d{4}-de .*
Velleman MK111 nicht nach MK??? sondern /.*MK[0-9]{3} .* oder /.*MK\d\d\d .*
Oppermann ~874_b_3T-9V_B.096 MetallSuchgerät_1a.pdf 231_b_2T-12V_B.1025 BMV Bistabile Kippstufe, FlipFlop dymamisch angesteuert, statischen Eing._1a.pdf Oppermann-x B.086 nicht nach B.??? sondern /.*B.[0-9]{3,4} .* oder /.*B.\d{3,4} .* PHILIPS
517_b_2T-9V_Philips EE2003 4.10 LDR Lichtmeßgerät ( LUX-Meter) mit Lautsprecher 150 Ohm_1a.pdf
247_b_2T-1La-1Ls-9V_EE1006-D29 BF194 BC148 RC-Oszillator_1a.pdf
447_b_3T-9V_Philips EE2004 1.10 Wechselsprechanlage (Gegensprechanlage) mit Lautspr.150 Ohm_1a.pdf
996_a_1T-4,5V_Philips A0 Elektronik für Kinder 3 Diode BA217 und Transistor BC158_1a.pdf
414_a_3T-9V_Philips A3 Gegentaktverstärker für Mikrofon mit 25 Ohm Lautsprecher_1a.pdf
~991_c_PHILIPS-x_EB74xx Hobby-Elektronik - Empfängerer-Bausatz EB7409 EB7410 (techn. Daten)_1a.pdf
PHILIPS EE1006-D29 nicht EE????-D29 sondern /.*EE[0-9]{4}.* oder /.*EE\d\d\d\d.*
PHILIPS EE2003 nicht EE???? sondern /.*EE[0-9]{4} .* oder /.*EE\d\d\d\d .*
PHILIPS EB7753 nicht EB7??? sondern /.*EB[0-9]{4} .* oder /.*EB\d{4} .*
Smart Kit B1045 nicht nach B???? sondern
Smart Kit B.1045 nicht nach B.???? sondern /.*B.[0-9]{4} .* oder /.*B.\d\d\d\d .*
797_a_Elek.m.Herz-x_EmH-043- Transistor BC547B (Bauelemente der Elektronik)_1a.pdf
electronicum nicht TYPE-??? sondern
Cart Elektronik Kar.04 nicht Kar.?? sondern
Cart Elektronik P-100 nicht P-??? sondern
Cart Elektronik C-014 nicht C-??? sondern
Elek.m.Herz-x K-S-066 nicht K-S-??? sondern /.*K-S-[0-9]{3} .* oder /.*K-S-\d\d\d .*
Elektronik Kurs 06.6 & 06.11 nicht ??.? ??.?? sondern
Elektr. Kurse PrennIng. VHS3.3.31 nicht VHS?.?.?? sondern /.*VHS[0-9]{1}.[0-9]{1}.[0-9]{2} .* oder /.*VHS\d.\d.\d\d .*
AMTRON
~797_c_AMTRON-x_AMTRON Bausätze UK-092 bis UK-995, Preisliste - Inhaltsverzeichnis 1976_1a.pdf
AMTRON UK-092 bis UK995 nicht UK-??? sondern /.*UK-[0-9]{3} .* oder /.*UK-\d\d\d .*
THOMSEN
~991_c_THOMSEN-x_Bausätze Bezeichnung TSB-xx und vgs-Bausätze DSP-xx, Preisliste 1981_1a.pdf
~895_d_kit-S-x-x-12V_#JK000-x VU-Meter mit UAA180 mit 12 LEDs (JOSTYkit)_1a.pdf
JOSTYkit #JK008-x nicht #JK???-x sondern /.*#JK[0-9]{3}-x .* oder /.*#JK\d\d\d-x .*
JOSTYkit #AF20-x nicht #AF??-x sondern /.*#AF[0-9]{2,3}-x .*
JOSTYkit #AF310-x nicht AF???-x sondern /.*#AF[0-9]{2,3}-x .*
JOSTYkit #AT50-x nicht #AT??-x sondern /.*#AT[0-9]{2,3}.*
JOSTYkit #AT320 nicht AF??? sondern /.*#AT[0-9]{2,3}.*
JOSTYkit #AE0-x
JOSTYkit #AE080-2
JOSTYkit #MI350 nicht #MI??? sondern /.*#MI[0-9]{2,3}.* 10 Dokumente oder /.*#[A-Z]{2}\d{1,3}[^0-9]?.* 162 Dokumente
nicht vergessen dass \w auch auf Ziffern matched!
JOSTYkit #NT10-x nicht #NT??-x sondern /.*#NT[0-9]{2,3}.*
JOSTYkit #GP304-x nicht #GP???-x sondern /.*#GP[0-9]{2,3}.*
JOSTYkit #GU312-x nicht #GU???-x sondern /.*#GU[0-9]{2,3}.*
JOSTYkit alle nicht #GU???-x sondern /.*#[A-Z]{2}\d{1,3}[^0-9]?.* 162 Dokumente
JOSTYkit #B0000 nicht #B???? sondern /.*#B[0-9]{1,4} .*
LC-electronic ELCE-x L002 bis L137 nicht L??? sondern /.*L[0-9]{3} .*
Sales Kit (EBV) SK-005 bis SK-196 nicht SK-??? sondern /.*SK-[0-9]{3} .*
SM-elektronik bzw. SM-electronic
~897_b_SM-S-x-L-12V_#10022 Elektronische Diebstahlsicherung mit Mikrofon_1a.pdf
~897_b_SM-S-x-L-12V_#20007 Lichtschranke mit Relais, LDR03_1a.pdf
SM-elektronik nicht SM-S-?-L sondern /.*SM-S-[0-9]{3}-L .*
SM-elektronik nicht 100-?? sondern /.*100-[0-9]{2} .*
TOP-electronic TOP-elektronik
~897_b_TOP-S-x-L-4,5V_#1568xb Multivibrator, AMV, Wechselblinker mit NAND-Gatter_1a.pdf
~897_b_TOP-S-x-L-12V_#1560xb 4-stellige Digital-Uhr-Modul (hh ss)_1a.pdf
~897_b_TOP-x-B-L-230V_#1552NT Labor-Netzgerät (Bauteile Pin-Belegung)_1a.pdf
TOP-electronic #15xxxx nicht #15???? sondern /.*#15[0-9]{4} .*
TOP-electronic nicht TOP-12345 sondern /.TOP-[0-9]{5} .*
TOP elektronik #1234xb nicht #????xb sondern /.*#[0-9]{4}xb .*
Vielstedter
~896_b_Bs-S-x-L-6V_VPS#022 Prüf-Summer, Wasserstands-Melder_1a.pdf
~896_b_Bs-S-x-L-9V_VUS#132 Subminiatur-UKW-Prüfsender_1a.pdf
Vielstedter nicht V??#??? sondern /.*[A-Z]{3}#\d{3} .*
Vielstedter VAC#547
Vielstedter VAL#137 Vielstedter VAS#049
Vielstedter VAV#004
Vielstedter VAZ#072
Vielstedter VBL#012
Vielstedter VBS#014
Vielstedter VBW#143
Vielstedter usw. usw. usw.
227_b_1Ta-1Pot-1IC-1Rel-4,5V_FC0111 NE555 selbststartender Timer_1a.doc
ds-electronics FC0111 nicht FC???? sondern /.*FC[0-9]{4} .* oder /.*FC\d\d\d\d .*
ds-electronik.de FC0195 nicht FC0??? sondern /.*FC0[0-9]{2,3} .*
wilbikit
~897_b_wilbikit-6V_Kit-79 Wechselsprechanlage ohne Umschalten, 3Watt_1a.pdf
~897_b_wilbikit-12V_Kit-47 Mikrosender FM 1W, UKW-Prüfsender 88 .. 108 MHz, Wanze_1a.pdf
wilbikit KIT-68 nicht kit-?? sondern /.*KIT-[0-9]{2,3} .*
??? THOMSON TBS-09 nicht TBS-?? sondern /.*TBS-[0-9]{2} .*
??? THOMSON-x Elektronik Bausätze (1981) TBS-09 bis TBS-55 /.*TBS-[0-9]{2} .*
??? vgs-Bausätze DBS-1 nur (Techn.Daten) /.*DBS-[0-9]{1,2} .*
??? vgs-Bausätze DPS15 nur (Techn.Daten) /.*DBS[0-9]{1,2} .*
~302_b_RIM-x_RIM65-017 NF- Mischverstärker_1a.jpg
RIM-x RIM65-018 nicht nach RIM??-??? sondern /.*RIM[0-9]{2}-[0-9]{3} .*
multiSIM A10-41° nicht A??-??° sondern /.*A[0-9]{2}-[0-9]{2}° .*
MultiSIM #05.03° nicht #??.??° sondern /.*#[0-9]{2}.[0-9]{2}° .*
multiSIM Leist#5.02.12 nicht Leist#?.??.?? sondern /.*Leist[0-9]{1}.[0-9]{2}.[0-9]{2} .*
Minispione-x ms-A-046 nicht ms-?-??? sondern /.*ms-.-[0-9]{3} .*
bis
Minispione-x ms-F-085 nicht ms-?-??? sondern /.*ms-.-[0-9]{3} .*
EWB = *.msm
~508_d_ewb-0V_1-12.NS17° Bezeichnung siehe Simulations-File mit gleicher Nr._1a.pdf
978_d_EWB-x_02.03.01 Vorwiderstand bei LEDs A2-32_1a.CA4
978_d_ewb-0V_D3-08° JK Auffang-Flip-Flop_1a.msm
~978_d_1C-1R-0V_A3-26° Phasenverschiebung zwischen Strom und Spannung_1a.msm 978_d_1T-1C-3R-0V_B4-21° NF-Leistungsverstärker mit dualer Betriebsspannung_1a.msm978_d_1IC-0V_C3-02° astabiler Multivibrator, AMV, LM741A_1a.msm 978_d_3D-1IC-0V_M1-21° Komparator zur Ansteuerung von TTL-ICs LM741 1N4732_1a.msm minispion ~786_d_minispione-x_ms-A-031 Automatische FM-Tonbandaufzeichnung_1a.pdf
786_d_minispione-x_ms-C-046 Telefonstatus-Monitor (OC 4011 4009)_1a.pdf
786_d_minispione-x_ms-F-044 UKW Minipeilsender 108-150MHz NE555 BFR92 BFR93_1a.pdf
64'er
037_b_5,25''-x_64'er Sonderheft SH11 86-11 A) _1a.d64
037_b_5,25''-x_64'er Sonderheft SH59 B) _1a.d64
935_a_C-64-x_64'er Sonderheft SH36 - 128er Alles über Grafik_1a.pdf
AKADEMIE-Bericht
935_a_FIS1985-x_A-B5.5.1 Motordrehrichtungssteuerung (Leiterplatte TIP110 2Rel und 1 Motor)_1a.pdf
AMATEUR Bd.4
~870_a_text-x_amateur-Bd.4-05 AMATEUR-ELEKTRONIK Band 4 für Haus Auto und Labor L.Hildebrand_1a.pdf
ANTENNEN
309_d_antenne-x_WLAN-Antennen 2,4GHz Wellenfänger so funktionieren Antennen c't 2003 Heft9_1a.pdf
bauMax Ratgeber
~309_a_selbst-x_bauMax Gartenteich (916-917)_1a.pdf
HORNBACH Arbeitsanleitungen
~309_a_selbst-x_HORNBACH 10.6 Paneele verlegen_1a.pdf
METABO
982_a_METABO-x_BHSTL Stichsägevorsatz_1a.pdf
BFI Elektronik-KURS
210_c_BFI-x_Basiswissen, E1-07 Transistor-Endstufen-Verstärker, Arbeitspunkt, A-Betrieb_1a.pdf
BB BlackBoard
923_a_BlackBoard-x_BB-02 Photoverstärker – Laser-Empfänger für Videosignale LT6230-10_1a.doc
lectron
~490_a_BRAUN-x_lectron00 Baustein-Katalog (27x27mm Magnetwürfel) Stückliste_1a.pdf
Computer Durchblick
750_b_COMDUR-x_3#06 MSR-Grundlagen 4, Messen Steuern Regeln m.d. PC +++ (Steuern Computer)_1a.pdf
DMS
137_d_DMS-x_Applikation von DMS im MesswertAufnehmerbau_1a.pdf
922_d_STAIGER-x_+++ DMS DV3102 6-pol. DIN Kalibrieradapter, 87,15 kOhm TL2_1a.pdf
922_d_VISHAY-x_DMS Messtechnologie, Formeln, Tabellen, Brückenschaltung, Dehnungsberechnungen_1a.pdf
HBM
975_d_HBM-x_SEMINAR-Manuskript - Das Kalibrieren einer Meßeinrichtung mit DMS - K. Hoffmann_1a.pdf
Elektro Praktiker BUCH
308_b_Elek-Prak-x_E-P-A-07.0 Die Elektroinstallation im Griff haben_1a.pdf
Elektronik-Lehrmittel
499_a_Didactic-x_Stecksystem Elektronik, E0.1 LDR05 NTC 2,2k AA118 1N4007 ZPD6,2 BD137 BC550_1a.pdf
Festnetz
~054_a_telefon-x_4.14.0 Telefonhörer abgenommen, Telefonschaltungen (BC517 BC548C)_1a.pdf
GRAF
954_d_GRAF-x_Multi-I-O PC-Interface, Der PC zwischen Analog und Digital, mc1990-06-68_1a.pdf
hobby-Bausätze
~299_b_hobby-x_Punktraster O-16 RC-Generator +++ (Wien-Brücke) - BSY75 BSY53 La=6V-0,3W_1a.pdf
OPITEC
948_a_OPITEC-x_110.040bd Wechselblinker § Holzbrettchen BC548 La3,8V_1a.pdf
WINKLER
948_a_WINKLER-x_101.442 Alarmanlage mit Selbsthaltung § Print BC337 LEDrt_1a.pdf
H-TRONIC
~797_a_H-TRONIC-x_Bausätze Inhaltsverzeichnis HBxxx +++ 210 Schaltungen_1a.xls
O+P Elektronik für Fluid-Techniker
~966_d_o+p-x_KURS Fluidtechniker 24 (8.6.00 Elektronik-Schaltung für Proportionalmagnete)_1a.pdf
EfM Elektronik für Maschinenbauer
~965_b_EfM-x_KURS - Maschinenbauer 09 (Kondensator, Lade- und Entladekurven)_1a.pdf
Konstruktons-Zeichenschablonen
300_b_standardgraph-x_3368 Schablone Schaltzeichen, Nachrichtentechnik DIN40900 IEC617_1a.pdf
961_a_Aristo-x_5031 Schablone Kurvenlineal_1a.pdf
961_a_rotring-x_850700 Schraubverbindungen DIN27 Zeichen-Schablone M4 M5 M6 M8 M10 (Prospekt)_1a.pdf
Laborkarten
~100_a_Laborkarten-x_Europaformat VERO E500 FR2 Streifenleiterplatine 5,08mm oben längs unten quer_1a.pdf
LUGATO
~307_a_LUGATO-x_es-158 Bilder-Anleitung (Keller mit schwarzer BLOCKER abdichten)_1a.pdf
LYTRON
281_c_LYTRON-x_ ECS2011 Akku Superlader Kriechhammer_1b.doc
Multisim
505_b_NI-x_Multisim Übung#04.2° - Thevenin and Norton Equivalent Circuits_1a.ms12
505_c_NI-x_multiSIM Ge#2.12° - 1N4004 als Schalter_1a.ms10
505_c_NI-x_multisim Master#02.08° - VoltsIn - DAQmx_1a.vi
505_d_1D-1R-0V_A07-08° Gleichrichter Grundschaltung 1-Lö_1a.ms10
505_d_1U-2Ta-0V_A10-56° Binär-Zähler mit 74LS93D_1a.ms10
508_c_multiSIM-x_0008 Kurzanleitung -16. Das Schaltungsverhalten analysieren_1a.pdf
itm-praktiker
993_a_PR-x_Einführung in die Computertechnik 08.Folge (BASIC)_1a.pdf
994_a_PR-x_Digitaltechnik leichtgemacht 07a (NAND-Funktion)_1a.pdf
Schaltbeispiele
000_b_text-x_5.07. Diebstahl-Warnanlage für PKW_1a.pdf
SN76477 Sound-Generator (TOPP-Buch)
196_c_Sound-x_SN76477-3.02 Dampfmaschinen-, Lokomotiven-Geräusch SN76477 (TOPP) S-54_1a.xls.pdf
VIS-System M.KÜHN FGM C-64 3HE-Einsteckkarten
597_a_KUEHN-x_FGM-2-01- VIS-System DIR der C-64 VIS-Programme auf 5,25 Diskette)_1a.pdf
CONRAD
954_d_VOLTCRAFT-x_V96 AUTO DMM Dig. Multimeter Voltcraft 96 (133035-62) Benutzerhandbuch-5_1a.pdf
SIEMENS Schaltbeispiele
danach kann nicht gesucht werden !
Optoelektronik in der Praxis
danach kann nicht gesucht werden !
WERSI Orgel COSMOS +++
968_b_WERSI-x_00-BA07-06 Aufbau COSMOS 07 (Kabelbaum einbauen)_1a.pdf
968_b_WERSI-x_16-BA580-xx NOISE GATE NG1 (Bauanleitung Noise Gate NG1) Schaltbild_1a.pdf
~968_b_WERSI-x_04-BA1000-xx Arbeits-Grundlagen 3 (Einbau von Halbleiter auf Platinen)_1a.pdf
Bauteilsuche LM555 NE555 TLC555 LMC555 nicht ??555 sondern /.* [A-Z]{2,3}[^0-9]555 .*
Bauteilsuche uA741 LM741 UA741 AD741 XL741 IC741 nicht ??741 sondern /.* [A-Z]{2}[^0-9]741 .*
Reguläre Ausdrücke Reiht man ein paar Zeichen aneinander, so stehen diese zunächst jeweils für sich selbst. abc findet also alles, was erst ein a dann ein b und schließlich ein c enthält - in genau dieser Reihenfolge und ohne sonstige Zeichen dazwischen.
Zugegeben, das bekommt wohl auch jeder bessere Texteditor auf die Reihe.
Will man an einer Stelle mehrere alternative Zeichen finden, kann man das mit Hilfe von eckigen Klammern realisieren. [aeiou] findet also Vokale und H[au]nd sowohl die Hand als auch den besten Freund des Menschen (und Wörter, die diese Wörter enthalten). Wenn Zeichen eine vorgegebene Reihenfolge haben (wie z.B. Buchstaben durch das Alphabet), so kann man auch Zeichenbereiche benennen. [3-9] findet alle Ziffern im Bereich von 3 bis 9 , [A-Z] alle Großbuchstaben. Interessant ist auch die Möglichkeit, Zeichen auszuschließen.
Man stellt dazu ein ^ hinter die öffnende eckige Klammer.
A[^r]t findet also die Art (und derartige Zusammensetzungen) nicht, sehr wohl aber das Amt oder die Abtei.
Genauso funktioniert das natürlich auch bei Zeichenbereichen (z.B. [^0-9] um Ziffern auszuschließen).
Eine Suche nach einer beliebigen Zeichenkette (in Mustern per * ) lässt sich in regulären Ausdrücken per .* realisieren.
Dies ist ein zusammengesetzter Ausdruck.
. Der Punkt steht nämlich für ein einzelnes beliebiges Zeichen.
* Der Stern dient als Wiederholungsoperator, d.h. durch ihn gilt das vorangehende Zeichen (hier der Punkt) nicht bloß einmal, sondern beliebig oft (oder nie).
* Der Stern ist aber nur eine Spezialform der Wiederholung.
{ }Die allgemeine Form wird mit geschweiften Klammern geschrieben.
Sie schließen zwei durch ein Komma getrennte Zahlen ein, die angeben, wie oft das jeweilige Zeichen wiederholt werden darf.
a{2,5} meint beispielsweise 2 bis 5 a 's hintereinander.
Man kann die zweite Zahl auch weglassen. a{2,} bedeutet dann zwei oder mehr aufeinander folgende a 's.
Lässt man schließlich noch das Komma weg, handelt es sich um eine genaue Angabe der Wiederholungen.
a{2} bedeutet also exakt zwei a 's hintereinander.
Der Stern ist folglich eine Abkürzung für {0,} , analog steht das Fragezeichen ? für {0,1} und das Plus + für {1,} . Noch einmal deutlich: ? heißt, das Zeichen darf ein Mal stehen muss aber nicht (also höchstens ein Mal). + heißt, das Zeichen muss mindestens ein Mal stehen. All diese Sprachelemente kann man auch miteinander kombinieren. [0-9]{5} hilft beispielsweise beim Auffinden von Postleitzahlen.
(Wobei natürlich erstmal auch längere Zahlen gefunden werden; wir lernen auch noch, das zu verhindern)
Beim Kombinieren muss man ab und an eine Reihenfolge festlegen.
Dabei helfen uns runde Klammern.
Ein Beispiel:
bla+se findet 'blase', 'blaase', 'blaaase' usw. Möchte man hingegen 'blase', 'blablase', 'blablablase' etc. finden, schreibt man (bla)+se. Die Klammern sorgen dafür, dass sich die Wiederholung nicht bloß auf das Zeichen vor dem Plus bezieht (hier das a ) sondern auf die ganze Silbe.
Das funktioniert natürlich mit allen Operatoren.
Alternativen trennt man durch einen senkrechten Strich voneinander ( AltGr + < ).
(Schloss|B[ue]rg) erkennt also sowohl das Schloss als auch die Burg und den Berg.
Im Gegensatz zur eckigen Klammer kann man so nicht bloß alternative Zeichen angeben, sondern auch Auswahlmöglichkeiten zwischen kompletten regulären Ausdrücken.
(Übrigens: die runden Klammern sind in diesem Beispiel zunächst nicht wichtig, sie sind jedoch später von Bedeutung um die Alternative zu begrenzen, wenn sie selbst nur ein Teilausdruck ist, wie im Superman-Beispiel am Ende des Artikels.)
Für kommende Experten sind auch die so genannten Backreferences (also Rückbezüge) unverzichtbar.
Ein Beispiel:
([a-z])\1\1 findet drei gleiche aufeinander folgende Kleinbuchstaben, wie in Schifffahrt oder Seeelefant.
Die Eins steht dabei für das im ersten runden Klammerpaar gefundene Zeichen.
Im Gegensatz zu den Wiederholungsoperatoren benennt der Rückbezug also das, was konkret gefunden wurde.
Backreferences beziehen sich immer auf Ausdrücke in runden Klammern.
Man kann bis zu neun von ihnen in einem Ausdruck verwenden.
Sie sind von \1 bis \9 nummeriert; gezählt wird von links nach rechts.
Bei Verschachtelungen sind die öffnenden Klammern ausschlaggebend.
Für den Fall, dass man den Suchbegriff am Anfang oder Ende der Zeile verankern möchte, stehen in regulären Ausdrücken die Zeichen ^ und $ zur Verfügung.
Der Suchbegriff "toll" findet sowohl die Zeilen 'toll' als auch 'tolles Beispiel' sowie 'richtig tolles Beispiel' und 'alle(s) toll'.
^toll kann sich hingegen nur mit den ersten beiden Möglichkeiten anfreunden, toll$ nur mit der ersten und der letzten und ^toll$ nur mit der ersten.
Was für Zeilen funktioniert, geht natürlich auch auf Wortebene. "car" könnte beispielsweise 'car', 'cartoon', 'oscar' und 'scary' finden. \<car gibt sich jedoch nur mit 'car' und 'cartoon' zufrieden. car\> mag nur 'car' und 'oscar'. \<car\>" verlangt schließlich ausdrücklich 'car'.
Zu erwähnen wäre noch \b, dass sowohl auf Wortanfang als auch -ende passt und \B , dass überall da passt, wo \b das nicht tut.
Quelle:
https://www.selflinux.org/selflinux/pdf/regex.pdf
********************************************************I*
Metazeichen http://regexlib.com/CheatSheet.aspx
^ Anfang einer Zeichenfolge. ^abc abc, abcdefg, abc123, ... $ Ende einer Zeichenfolge. abc$ abc, endsinabc, 123abc, ... . Ein beliebiges Zeichen (außer \n Newline) a.c abc, aac, acc, adc, aec, ... | Wechsel. bill|ted, bill rechnung {...} Explizite Quantennotation. ab {2} c abc [...] Explizite Zeichenmenge, die übereinstimmen soll. a [bB] c abc, aBc (...) Logische Gruppierung eines Teils eines Ausdrucks. (abc) {2} abcabc * 0 oder mehr des vorherigen Ausdrucks. ab * c ac, abc, abbc, abbbc, ... + 1 oder mehr des vorherigen Ausdrucks. ab + c abc, abbc, abbbc, ... ? 0 oder 1 des vorherigen Ausdrucks;
erzwingt auch einen minimalen Abgleich, wenn ein Ausdruck mit mehreren Zeichenfolgen
innerhalb einer Suchzeichenfolge übereinstimmt. ab? c ac, abc
\ Vor einem der obigen Punkte ist es ein Literal anstelle eines Sonderzeichens.
Vor einem speziellen passenden Zeichen, siehe unten. a \ sc a c
Zeichenflucht http://tinyurl.com/5wm3wl
gewöhnliche Zeichen Andere Zeichen als. $ ^ {[(|)]} * +? \ stimmen sich überein. \a Stimmt mit einer Klingel (Alarm) überein \ u0007. \b Stimmt mit einer Rücktaste \ u0008 überein, wenn in einem [ ];
entspricht sonst einer Wortgrenze (zwischen den Zeichen \ w und \ W).
\t Stimmt mit einem Tab \ u0009 überein. \r Stimmt mit einem Wagenrücklauf \ u000D überein. \v Stimmt mit einem vertikalen Tab \ u000B überein. \f Stimmt mit einem Formular-Feed \ u000C überein. \n Entspricht einer neuen Zeile \ u000A. \e Stimmt mit einem Escape \ u001B überein. \040 Entspricht einem ASCII-Zeichen als Oktal (bis zu drei Ziffern);
Zahlen ohne führende Null sind Rückreferenzen, wenn sie nur eine Ziffer haben oder einer erfassenden Gruppennummer entsprechen.
(Weitere Informationen finden Sie unter Rückreferenzen.)
Das Zeichen \ 040 steht beispielsweise für ein Leerzeichen.
\x20 Entspricht einem ASCII-Zeichen in Hexadezimaldarstellung (genau zwei Ziffern). \cC Stimmt mit einem ASCII-Steuerzeichen überein. Zum Beispiel ist \ cC Control-C. \u0020 Stimmt mit einem Hexadezimalzeichen (genau vier Stellen) mit einem Unicode-Zeichen überein. \* Wenn ein Zeichen folgt, das nicht als Escape-Zeichen erkannt wird, stimmt dieses Zeichen überein. Zum Beispiel ist \ * dasselbe wie \ x2A.
Charakterklassen http://tinyurl.com/5ck4ll
. Stimmt mit jedem Zeichen außer \ n überein.
Wenn Sie mit der Option "Einlinig" geändert werden, entspricht ein Punktzeichen einem beliebigen Zeichen.
Weitere Informationen finden Sie unter Optionen für reguläre Ausdrücke.
[aeiou] Stimmt mit jedem einzelnen Zeichen überein, das in der angegebenen Gruppe von Zeichen enthalten ist. [^ aeiou] Stimmt mit jedem einzelnen Zeichen überein, das nicht im angegebenen Zeichensatz enthalten ist. [0-9a-fA-F] Die Verwendung eines Bindestrichs (-) ermöglicht die Angabe von zusammenhängenden Zeichenbereichen. \ p {Name} Entspricht einem beliebigen Zeichen in der von {Name} angegebenen Zeichenklasse.
Unterstützte Namen sind Unicode-Gruppen und Blockbereiche. Zum Beispiel Ll, Nd, Z, IsGreek, IsBoxDrawing.
\ P {Name} Stimmt mit Text überein, der nicht in Gruppen und Blockbereichen enthalten ist, die in {Name} angegeben sind. \ w Entspricht einem beliebigen Wortzeichen.
Entspricht den Unicode-Zeichenkategorien [\ p {Ll} \ p {Lu} \ p {Lt} \ p {Lo} \ p {Nd} \ p {Pc}].
Wenn ECMAScript-konformes Verhalten mit der ECMAScript-Option angegeben wird, ist \ w äquivalent zu [a-zA-Z_0-9].
\ W Entspricht einem beliebigen Nichtwortzeichen.
Entspricht den Unicode-Kategorien [^ \ p {Ll} \ p {Lu} \ p {Lt} \ p {Lo} \ p {Nd} \ p {Pc}].
Wenn ECMAScript-konformes Verhalten mit der ECMAScript-Option angegeben wird, entspricht \ W [^ a-zA-Z_0-9].
\ s Entspricht einem beliebigen Leerzeichen.
Entspricht den Unicode-Zeichenkategorien [\ f \ n \ r \ t \ v \ x85 \ p {Z}].
Wenn ECMAScript-konformes Verhalten mit der ECMAScript-Option angegeben wird, ist \ s äquivalent zu [\ f \ n \ r \ t \ v].
\ S Entspricht einem beliebigen Zeichen ohne Leerzeichen.
Entspricht den Unicode-Zeichenkategorien [^ \ f \ n \ r \ t \ v \ x85 \ p {Z}].
Wenn mit der ECMAScript-Option ein ECMAScript-konformes Verhalten angegeben wird, entspricht \ S [^ \ f \ n \ r \ t \ v].
\ d Entspricht einer beliebigen Dezimalstelle. Entspricht \ p {Nd} für Unicode und [0-9] für Nicht-Unicode, ECMAScript-Verhalten. \ D Stimmt mit jedem Nicht-Datum überein. Entspricht \ P {Nd} für Unicode und [^ 0-9] für Nicht-Unicode-Verhalten von ECMAScript
DIN A4 ausdrucken
********************************************************I*
Impressum: Fritz Prenninger, Haidestr. 11A, A-4600 Wels, Ober-Österreich, mailto:[email protected]ENDE RECHTEVERLETZUNG
https://de.wikipedia.org/wiki/Netiquette
Erweiterte suche
ACHTUNG Bindestriche werden oft als Leerzeichen=Trennzeichen als Minus als bis interpretiert. Video-Umschalter sucht nach Video & nach Umschalter daher Led-Umschalter, Video Mischer usw. Jokerzeiche vor Minus bringen kein Suchergebnis. * bzw ? steht für Zahlen aber auch Buchstaben Es gibt aber andere Lösungen um nur nach Zahlen zu suchen !
Details siehe
http://sites.schaltungen.at/elektronik/google-suche/schaltungen-suche ARDUINO UNO R3 2014-09s062 nicht ?????-??s??? sondern elektor ab 1988 123456-11 nicht ??????-11 sondern /.*[0-9]{5,6}-11.* Im neuen System kann man haargenau nach dem Muster "6 Ziffern Bindestrich 62" suchen: i-trix nicht ??KW??-11
10.000 Schaltungen Bd05-Tl0-$0128 #12 nicht nach Bd05-Tl0-$???? sondern
10.000 Schaltungen 05.88.15-en nicht nach 05.??.??-en sondern
CONRAD 123456-62 nicht ??????-62 sondern /.*[0-9]{6}-62.*
H-Tronic HB448 HB???
ELV 68-468-90 nicht 68-???-?? sondern
AATiS AS123 nicht nach AS??? sondern
itm-praktiker pr82-01-08 nicht nach pr82-??-?? sondern
E-A-M nicht 1988-?-?? elex nicht 8????X elrad spe-5.093 nicht nach spe-?.???
Kemo #B191 nicht nach #B??? sondern
Velleman MK111 nicht nach MK??? sondern Oppermann B.086 nicht nach B.??? sondern
PHILIPS EE2003 nicht EE???? sondern
Smart Kit B.1004 nicht nach B.???? sondern
electronicum nicht TYPE-??? sondern
Cart Elektronik Kar.04 nicht Kar.?? sondern
Elektronik mit Herz K-S-066 nicht K-S-??? sondern
Elektr. Kurse PrennIng. VHS3.3.31 nicht VHS?.?.?? sondern
AMTRON nicht UK-???
JOSTYkit #JK008-x nicht #JK???-x sondern
LC-electronik nicht L???/? sondern
Sales Kit SK-001 nicht SK-??? sondern
SM-elektronik nicht SM-S-?-L sondern
TOP elektronik #1234xb nicht #????xb sondern
Vielstedter VTT#155 nicht VTT#??? sondern
wilbikit KIT-68 nicht kit-?? sondern
ds-electronik.de FC0195 nicht FC0??? sondern FC0*
??? THOMSON TBS-09 nicht TBS-?? sondern
??? vgs-Bausätze DBS-1 bis DPS15 nur (Techn.Daten)
RIM suche nach RIM
multiSIM A10-41° nicht A??-??° sondern
Minispione-x ms-A-046 nicht ms-?-???
Bauteilsuche ??555 findet LM555 NE555 TLC555 LMC555
ENDE
RegEx Reguläre Ausdrücke beschreiben Strings analytisch nach Mustern. Ohne einen String genau zu kennen, kann ich doch Regeln aufstellen, denen er zu genügen hat. Mit einer RegEx als Filterkriterium 'pattern' kann ein gegebener String verglichen, auf einen 'match' geprüft und ausgewertet werden. Benutzt werden Perl-kompatible RegEx zum Beispiel in PHP und JavaScripts.
Es hat nur ein @-Zeichen, das nicht am Anfang steht, und von mehreren Zeichen gefolgt wird, bis ein Punkt kommt gefolgt von mindestens zwei Zeichen.
Aufbau einer RegExRegEx Eine RegEx ist selbst ein String und steht in einfachen Anführungszeichen (Hochkomma). Er hat ein Startzeichen und ein gleiches Endzeichen (Delimiter), meisst der / (slash).
Falls der Slash als Delimiter benutzt wird, müssen andere Slashes im RegEx-String (etwa bei einer URL) durch einen Backslash \/ escaped werden,
oder man benutzt das Prozentzeichen % als Delimiter, weil es kein Metazeichen ist.
Dazwischen befinden sich eine Folge einzelner Zeichen (literal, sich selber meinend) und Ausdrücken, gruppiert durch () (Klammern).
Diese Gruppen werden zwischengespeichert und können wiederverwendet werden.
Vor und nach Zeichen oder Gruppen werden Anweisungen gesetzt durch Metazeichen, Zeichen mit spezieller Bedeutung. Nach dem Endzeichen, kommt ein Modus-Modifikator, welcher gesammt Kriterien anwendet wie z.B. 'beachte die Gross-/Kleinschreibung nicht'. MetazeichenDie Anweisungen werden durch Operatoren für Wiederholung, Verkettung und Alternative gesetzt.
So stellt ein Metazeichen fest, ob ein Zeichen 'n' am Anfang oder am Schluss eines Strings steht, wieviele Zeichen davor stehen, von wievielen Zeichen es gefolgt wird, von was für welchen, ob es Versal oder klein ist, ob es eine Zahl, ein Whitespace oder irgend etwas ist, wie oft es vor kommt, etc.
Für diese 'Gesetze' oder Aussagen gibt es Metazeichen, also Symbole oder Kürzel.
Die Metazeichen bedeuten nicht mehr sich selbst, ausser sie werden escaped durch einen Backslash.
^ Markiert Anfang eines Strings, bezieht sich auf folgendes Zeichen oder Gruppe (ausser in [ ], siehe Zeichenklasse)
$ Markiert Ende eines Strings, bezieht sich auf vorangehendes Zeichen oder Gruppe . steht für ein (1) beliebiges Zeichen (wildecard) .. steht für zwei (2) beliebige Zeichen ... steht für drei (3) beliebige Zeichen (etc.) # Betrachet den Rest der Zeile als Kommentar, bezieht sich auf alle nachfolgenden Zeichen Quantoren für Anzahln? Einmal oder keinmal vorhandenes 'n' (optional) ( ) Gruppen, Ausdrücke, Substring, Submuster(nat) n und a und t | Operator zur Alternative (oder)(n|a) Entweder 'n' oder 'a'(x|y|z) Entweder 'x' oder 'y' oder 'z'(Marcel|Biefer) Entweder 'Marcel' oder 'Biefer'(?#) Betrache diesen Substrings als Kommentar(?P<Name>) Submuster gruppieren und Subtreffer in benannter Capture-Gruppe 'Name' festhalten.(Ohne Benennung wird die Gruppe in einem nummerierten Array abgelegt.)
[ ] Zeichenklasse, Auswahl-Liste oder von - bis[abc] a,b oder c[c-h] ein Kleinbuchstabe zwischen c und h (c,d,e,f,g,h)[D-H] ein Großbuchstabe zwischen D und H (D,E,F,G,H)[_a-zA-Z] ein Unterstrich und ein beliebiger Buchstabe des Alphabets[1-6] eine Zahl zwischen 1 und 6[0-9] irgendeine Zahl[:space:] Leerzeichen[^] Operator zum Ausschluss, Verneinung[^n] Irgendein Zeichen, das sich nicht in dieser Liste befindet, also alles als ein 'n'[^0-9] keine Zahl[^a-z] kein Kleinbuchstaben
PCRE Zeichenklassen (Perl Compatible Reg Ex)\ Escape-Zeichen
BeispieleMindestens ein Buchstabe, eine Zahl oder ein Unterstrich |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

