Zum Inhalt springen

RegEx/Anwendungen: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „Regular Expression/Übungen und Beispiele = Übungen und Beispiele = == Einfache Übungen == {| class="wikitable sortable" |- | | # | | <tt>'''Haus'''</tt> | | Die Zeichenfolge "Haus" |- | | # | | <tt>'''^Haus'''</tt> | | "Haus" am Zeilenanfang |- | | # | | <tt>'''Haus$'''</tt> | | "Haus" am Zeilenende |- | | # | | <tt>'''^Haus$'''</tt> | | "Haus" als einziges Wort in einer Zeile |- | | # | | <tt>'''[Hh]aus'''</tt> | | "Haus" oder…“
 
 
(68 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Regular Expression/Übungen und Beispiele
'''RegEx/Anwendungen''' - Beispiele


=  Übungen und Beispiele  =
==  Einfache Ausdrücke ==
==  Einfache Übungen ==
{| class="wikitable sortable options"
{| class="wikitable sortable"
|-
|-
|  | #
|  | Haus
 
|  | <tt>'''Haus'''</tt>
|  | Die Zeichenfolge "Haus"
|  | Die Zeichenfolge "Haus"
|-
|-
|  | #
|  | ^Haus
 
|  | <tt>'''^Haus'''</tt>
|  | "Haus" am Zeilenanfang
|  | "Haus" am Zeilenanfang
|-
|-
|  | #
|  | Haus$
 
|  | <tt>'''Haus$'''</tt>
|  | "Haus" am Zeilenende
|  | "Haus" am Zeilenende
|-
|-
|  | #
|  | ^Haus$
 
|  | <tt>'''^Haus$'''</tt>
|  | "Haus" als einziges Wort in einer Zeile
|  | "Haus" als einziges Wort in einer Zeile
|-
|-
|  | #
|  | [Hh]aus
 
|  | <tt>'''[Hh]aus'''</tt>
|  | "Haus" oder "haus"
|  | "Haus" oder "haus"
|-
|-
|  | #
|  | Ha[unl]s
 
|  | <tt>'''Ha[unl]s'''</tt>
|  | "Haus", "Hals" oder "Hans"
|  | "Haus", "Hals" oder "Hans"
|-
|-
|  | #
|  | [^HML]aus
 
|  | <tt>'''[^HML]aus'''</tt>
|  | Weder "Haus", noch "Maus", noch "Laus", dafür aber andere Zeichenfolgen, welche "aus" enthalten
|  | Weder "Haus", noch "Maus", noch "Laus", dafür aber andere Zeichenfolgen, welche "aus" enthalten
|-
|-
|  | #
|  | Ha.s
 
|  | <tt>'''Ha.s'''</tt>
|  | Der dritte Buchstabe ist ein beliebiges Zeichen
|  | Der dritte Buchstabe ist ein beliebiges Zeichen
|-
|-
|  | #
|  | ^...$
 
|  | <tt>'''^...$'''</tt>
|  | Jede Zeile mit genau drei Zeichen
|  | Jede Zeile mit genau drei Zeichen
|-
|-
|  | #
|  | ^\.
 
|  | <tt>'''^\.'''</tt>
|  | Jede Zeile, die mit einem Punkt beginnt
|  | Jede Zeile, die mit einem Punkt beginnt
|-
|-
|  | #
|  | ^\.[a-z][a-z]
 
|  | <tt>'''^\.[a-z][a-z]'''</tt>
|  | Jede Zeile, die mit einem Punkt und zwei Kleinbuchstaben beginnt
|  | Jede Zeile, die mit einem Punkt und zwei Kleinbuchstaben beginnt
|-
|-
|  | #
|  | ^\.[a-z]\{2\}
 
|  | <tt>'''^\.[a-z]\{2\}'''</tt>
|  | Wie oben, jedoch nur in grep und sed zulässig
|  | Wie oben, jedoch nur in grep und sed zulässig
|-
|-
|  | #
|  | ^[^.]
 
|  | <tt>'''^[^.]'''</tt>
|  | Jede Zeile, die nicht mit einem Punkt beginnt
|  | Jede Zeile, die nicht mit einem Punkt beginnt
|-
|-
|  | #
|  | Fehler*
 
|  | <tt>'''Fehler*'''</tt>
|  | "Fehle"(!), "Fehler", "Fehlers", etc
|  | "Fehle"(!), "Fehler", "Fehlers", etc
|-
|-
|  | #
|  | "Wort"
 
|  | <tt>'''"Wort"'''</tt>
|  | Ein Wort in Anführunszeichen
|  | Ein Wort in Anführunszeichen
|-
|-
|  | #
|  | "*Wort"*
 
|  | <tt>'''"*Wort"*'''</tt>
|  | Ein Wort mit beliebig vielen (auch keinen) Anführungszeichen
|  | Ein Wort mit beliebig vielen (auch keinen) Anführungszeichen
|-
|-
|  | #
|  | [A-Z][A-Z]*
 
|  | <tt>'''[A-Z][A-Z]*'''</tt>
|  | Ein oder mehrere Großbuchstaben.
|  | Ein oder mehrere Großbuchstaben.
|-
|-
|  | #
|  | [A-Z]+
 
|  | <tt>'''[A-Z]+'''</tt>
|  | Wie oben, jedoch nur in egrep und awk zulässig
|  | Wie oben, jedoch nur in egrep und awk zulässig
|-
|-
|  | #
|  | [A-Z].*
 
|  | <tt>'''[A-Z].*'''</tt>
|  | Ein Großbuchstabe, gefolgt von keinem oder beliebig vielen Zeichen
|  | Ein Großbuchstabe, gefolgt von keinem oder beliebig vielen Zeichen
|-
|-
|  | #
|  | [A-Z]*
 
|  | <tt>'''[A-Z]*'''</tt>
|  | Kein, ein oder mehrere Großbuchstaben
|  | Kein, ein oder mehrere Großbuchstaben
|-
|-
|  | #
|  | [a-zA-Z]
 
|  | <tt>'''[a-zA-Z]'''</tt>
|  | Ein Buchstabe
|  | Ein Buchstabe
|-
|-
|  | #
|  | [^0-9a-zA-Z]
 
|  | <tt>'''[^0-9a-zA-Z]'''</tt>
|  | Symbole (weder Buchstaben noch Zahlen)
|  | Symbole (weder Buchstaben noch Zahlen)
|-
|-
|  | #
|  | [0-9a-zA-Z]
 
|  | <tt>'''[0-9a-zA-Z]'''</tt>
|  | Jedes alphanumerische Zeichen
|  | Jedes alphanumerische Zeichen
|-
|}


== Beispiele ==
{| class="wikitable sortable options gnu"
|-
|-
! Aufgabe !! Suchen !! Ersetzen !! Beschreibung
|-
| Absätze zusammenführen || ([a-zäüöß,-])\n([a-zäüöß]) || \1 \2||
|-
| Absätze aufbrechen || \. ([a-zA-Z])  || . \n\* \1||
|-
| Leerzeilen in Aufzählungen  || \n\n([a-z]) || \n* \1||
|-
| Alleinstehende Aufzählungspunkte  || ^\* $  ||||
|-
| Leere Absätze löschen || \n\n\n  || \n\n||
|-
| Zeilenwechsel nach Überschriften  || =\n\n  || =\n||
|-
| style-Attribute  || style=".*;" ||||
|-
| HTML-Kontainer || \<div.*\>(.*)\</div\> || \1||
|-
| HTML-Kontainer || \<tt\>(.*)\</tt\> || \1 ||
|-
| HTML-Kontainer || \<span\>(.*)\</span\> || \1 ||
|-
| HTML-Kontainer || \</*nowiki\> ||||
|-
| HTML-br || <nowiki>\<br/\></nowiki> || \n||
|-
| Anker  || \{\{anchor.*\}\}  ||||
|-
| Anker  || \{\{anker.*\}\}  ||||
|-
| Referenzen  || \<ref\>.*\</ref\> ||||
|-
| Referenzen  || <nowiki><ref name=.*</ref></nowiki> ||||
|-
| Referenzen  || <nowiki><ref name=.*/></nowiki> ||||
|-
| Tabelle formatieren || <nowiki>\{\|</nowiki>  || <nowiki>{| class="wikitable sortable options"</nowiki>||
|-
| Non Braking Spaces  || &amp;nbsp; ||||
|-
| Images  || \[\[Image:.*\]\]  || ''||
|-
| Images durch alt-Text ersetzen || \[\[Image:.*\|alt="(.*)"\]\]  || \1||
|-
| Führende Leerzeichen  || ^ * || ''||
|-
| Manpage Überschriften in Wiki-Überschriften  || ^(<nowiki>[[:upper:]]</nowiki>{2,}[ /_]?[[:upper:] ]*)$ || <nowiki>== \1 ==</nowiki>||
|-
| Manpage Optionen in erste Tabellenzelle || <nowiki>(^-[A-Za-z0-9] ?[A-Za-z_\[\]:]*)</nowiki> || | \1||
|-
| TODOs auskommentieren ||  <nowiki>^^('''TODO: '''.*$)</nowiki> ||  <nowiki> ^<!-- \1 --> </nowiki>||
|-
| Wikitable Spalten tauschen (Erste/Zweite) || <nowiki>(.*) \|\|(.*)$</nowiki> || <nowiki> |\2 |\1 </nowiki>||
|-
| Führende Nummern in Wiki-Überschriften  || <nowiki>= ([0-9]*\.)* ([A-Z]){1}</nowiki> || <nowiki>= \2</nowiki>||
|-
| Leerzeichen am Zeilenende ersetzen || <nowiki>( $)</nowiki> ||||
|-
| Optionen in Wiki-Spalten || <nowiki> ^-(.*), --(.*)\n </nowiki> || <nowiki> |-\n| -\1 || --\2 ||  </nowiki>
|}
|}
==  Beispiele für egrep- oder awk-Muster ==
[567] * Eine der Zahlen 5, 6 oder 7


  fuenf|sechs|sieben * Eines der Worte fünf, sechs oder sieben
; Abkürzungen
{| class="wikitable sortable"
|-
! Suchen !! Ersetzen
|-
| bzw\. || beziehungsweise
|-
| u\.U\. || gegebenenfalls
|-
| d\.h\. || das bedeutet,
|-
| z\.B\. || etwa
|-
| <nowiki>z\.&amp;nbsp;B\.</nowiki> || etwa
|-
| u\.a\. || unter anderem
|-
| ggf\. || gegebenenfalls
|-
| usw\. || und so weiter
|}


  80[234]?86> * "8086", "80286", "80386", "80486"
== [[egrep]]/[[awk]] ==
{| class="wikitable sortable options"
|-
| <nowiki>[567]</nowiki>
| Eine der Zahlen 5, 6 oder 7
|-
| <nowiki>fuenf|sechs|sieben</nowiki>
| Eines der Worte fünf, sechs oder sieben
|-
| <nowiki>80[234]?86></nowiki>
| "8086", "80286", "80386", "80486"  
|-
|  <nowiki>F(ahr|lug)zeug</nowiki>
| "Fahrzeug" oder "Flugzeug"
|-
|}


F(ahr|lug)zeug * "Fahrzeug" oder "Flugzeug"
== [[sed]]/[[grep]] ==
{| class="wikitable sortable options"
|-
| <nowiki>0\{5,\}*</nowiki> || Fünf oder mehr Nullen in Folge
|-
| <nowiki>[0-9]-[0-9]\{3\}-[0-9]\{5\}-[0-9X]*</nowiki> || ISBN-Nummern in der Form n-nnn-nnnnn-n, das letzte Zeichen kann auch ein X sein
|}


== Beispiele für vi-Muster ==
== [[vim]] ==
\<The * Wörter wie "Theater" oder "Thema"
{| class="wikitable sortable options"
 
|-
ung\> * Wörter wie "Teilung" oder "Endung"
| \<The
 
| Wörter wie "Theater" oder "Thema"  
\<Wort\> * Das Wort "Wort"
|-
 
| ung\>
==  Beispiele für sed- oder grep-Muster ==
| Wörter wie "Teilung" oder "Endung"  
  0\{5,\}* Fünf oder mehr Nullen in Folge
|-
 
| \<Wort\>
[0-9]-[0-9]\{3\}-[0-9]\{5\}-[0-9X]* ISBN-Nummern in der Form n-nnn-nnnnn-n, das letzte Zeichen kann auch ein X sein
| Das Wort "Wort"  
 
|-
==  VIM-Beispiele ==
| s/.*/( & )/
Leerzeichen wurden durch _ Tabulatoren durch TAB eretzt. Ex-Befehle werden mit Doppelpunkt eingeleitet.# <tt>'''s/.*/( & )/'''
| Leerzeichen wurden durch _ Tabulatoren durch TAB eretzt. Ex-Befehle werden mit Doppelpunkt eingeleitet.  
 
|-
Wiederholt die ganze Zeile, fügt aber Klammern hinzu
| s/.*/mv & &.old/
'''s/.*/mv & &.old/'''
| Wiederholt die ganze Zeile, fügt aber Klammern hinzu  
 
|-
Formt eine Wortliste (ein Wort pro Zeile) zu mv-Befehlen um
| /^$/d
'''/^$/d'''
| Formt eine Wortliste (ein Wort pro Zeile) zu mv-Befehlen um  
 
|-
Löscht Leerzeilen
| /^[_TAB]*$/d
'''/^[_TAB]*$/d'''
| Löscht Leerzeilen  
 
|-
Löscht Leerzeilen und Zeilen, die nur aus Leerzeichen oder Tabulatoren bestehen
| / */ /g
'''/ */ /g'''
| Löscht Leerzeilen und Zeilen, die nur aus Leerzeichen oder Tabulatoren bestehen  
 
|-
Wandelt ein oder mehrere Leerzeichen in ein Leerzeichen um
| :s/[0-9]/Element &:/
''':s/[0-9]/Element &:/'''
| Wandelt ein oder mehrere Leerzeichen in ein Leerzeichen um  
 
|-
Wandelt (in der aktuellen Zeile) eine Zahl in ein Label für ein Element um
| :s
''':s'''
| Wandelt (in der aktuellen Zeile) eine Zahl in ein Label für ein Element um  
 
|-
Wiederholt die Substitution beim ersten Vorkommen
| :&
''':&'''
| Wiederholt die Substitution beim ersten Vorkommen  
 
|-
Wie oben
| :sg
''':sg'''
| Wie oben  
 
|-
Wie oben, aber für alle Vorkommen in einer Zeile
| :&g
''':&g'''
| Wie oben, aber für alle Vorkommen in einer Zeile  
 
|-
Wie oben
| :%&g
''':%&g'''
| Wie oben  
 
|-
Wiederholt die Substitution im ganzen Puffer
| :.,$s/Wort/\U&/g
''':.,$s/Wort/\U&/g'''
| Wiederholt die Substitution im ganzen Puffer  
 
|-
Wandelt von der aktuellen bis zur letzten Zeile das Wort Wort in Großschreibung um
| :%s/.*/\L&/
''':%s/.*/\L&/'''
| Wandelt von der aktuellen bis zur letzten Zeile das Wort Wort in Großschreibung um  
 
|-
Wandelt die gesamte Datei in Kleinschreibung um
| :s/\<./\u&/g
''':s/\<./\u&/g'''
| Wandelt die gesamte Datei in Kleinschreibung um  
 
|-
Wandelt den ersten Buchstaben jedes Wortes in der aktuellen Zeile in Großschreibung um
| :%s/ja/nein/g
''':%s/ja/nein/g'''
| Wandelt den ersten Buchstaben jedes Wortes in der aktuellen Zeile in Großschreibung um  
 
|-
Ersetzt das Wort ja durch nein
| :%s/Ja/~/g
''':%s/Ja/~/g'''
| Ersetzt das Wort ja durch nein. | Ersetzt global ein anderes Wort (Ja) durch nein (Wiederverwendung des vorherigen Ersatzmusters)  
 
|-
Ersetzt global ein anderes Wort (Ja) durch nein (Wiederverwendung des vorherigen Ersatzmusters)
|}


[[Kategorie:Bash/Scripting]]
[[Kategorie:Bash/Scripting]]
[[Kategorie:Regular expression]]
[[Kategorie:Regular Expression]]
[[Kategorie:Linux/Dateien]]
[[Kategorie:MediaWiki/Anleitung]]
[[Kategorie:IT-Grundlagen]]
[[Kategorie:MediaWiki/Vorlagen]]

Aktuelle Version vom 28. Januar 2025, 11:04 Uhr

RegEx/Anwendungen - Beispiele

Einfache Ausdrücke

Haus Die Zeichenfolge "Haus"
^Haus "Haus" am Zeilenanfang
Haus$ "Haus" am Zeilenende
^Haus$ "Haus" als einziges Wort in einer Zeile
[Hh]aus "Haus" oder "haus"
Ha[unl]s "Haus", "Hals" oder "Hans"
[^HML]aus Weder "Haus", noch "Maus", noch "Laus", dafür aber andere Zeichenfolgen, welche "aus" enthalten
Ha.s Der dritte Buchstabe ist ein beliebiges Zeichen
^...$ Jede Zeile mit genau drei Zeichen
^\. Jede Zeile, die mit einem Punkt beginnt
^\.[a-z][a-z] Jede Zeile, die mit einem Punkt und zwei Kleinbuchstaben beginnt
^\.[a-z]\{2\} Wie oben, jedoch nur in grep und sed zulässig
^[^.] Jede Zeile, die nicht mit einem Punkt beginnt
Fehler* "Fehle"(!), "Fehler", "Fehlers", etc
"Wort" Ein Wort in Anführunszeichen
"*Wort"* Ein Wort mit beliebig vielen (auch keinen) Anführungszeichen
[A-Z][A-Z]* Ein oder mehrere Großbuchstaben.
[A-Z]+ Wie oben, jedoch nur in egrep und awk zulässig
[A-Z].* Ein Großbuchstabe, gefolgt von keinem oder beliebig vielen Zeichen
[A-Z]* Kein, ein oder mehrere Großbuchstaben
[a-zA-Z] Ein Buchstabe
[^0-9a-zA-Z] Symbole (weder Buchstaben noch Zahlen)
[0-9a-zA-Z] Jedes alphanumerische Zeichen

Beispiele

Aufgabe Suchen Ersetzen Beschreibung
Absätze zusammenführen ([a-zäüöß,-])\n([a-zäüöß]) \1 \2
Absätze aufbrechen \. ([a-zA-Z]) . \n\* \1
Leerzeilen in Aufzählungen \n\n([a-z]) \n* \1
Alleinstehende Aufzählungspunkte ^\* $
Leere Absätze löschen \n\n\n \n\n
Zeilenwechsel nach Überschriften =\n\n =\n
style-Attribute style=".*;"
HTML-Kontainer \<div.*\>(.*)\</div\> \1
HTML-Kontainer \<tt\>(.*)\</tt\> \1
HTML-Kontainer \<span\>(.*)\</span\> \1
HTML-Kontainer \</*nowiki\>
HTML-br \<br/\> \n
Anker \{\{anchor.*\}\}
Anker \{\{anker.*\}\}
Referenzen \<ref\>.*\</ref\>
Referenzen <ref name=.*</ref>
Referenzen <ref name=.*/>
Tabelle formatieren \{\| {| class="wikitable sortable options"
Non Braking Spaces &nbsp;
Images \[\[Image:.*\]\]
Images durch alt-Text ersetzen alt="(.*)"\]\] \1
Führende Leerzeichen ^ *
Manpage Überschriften in Wiki-Überschriften ^([[:upper:]]{2,}[ /_]?[[:upper:] ]*)$ == \1 ==
Manpage Optionen in erste Tabellenzelle (^-[A-Za-z0-9] ?[A-Za-z_\[\]:]*) \1
TODOs auskommentieren ^^('''TODO: '''.*$) ^<!-- \1 -->
Wikitable Spalten tauschen (Erste/Zweite) (.*) \|\|(.*)$ |\2 |\1
Führende Nummern in Wiki-Überschriften = ([0-9]*\.)* ([A-Z]){1} = \2
Leerzeichen am Zeilenende ersetzen ( $)
Optionen in Wiki-Spalten ^-(.*), --(.*)\n |-\n| -\1 || --\2 ||
Abkürzungen
Suchen Ersetzen
bzw\. beziehungsweise
u\.U\. gegebenenfalls
d\.h\. das bedeutet,
z\.B\. etwa
z\.&nbsp;B\. etwa
u\.a\. unter anderem
ggf\. gegebenenfalls
usw\. und so weiter

egrep/awk

[567] Eine der Zahlen 5, 6 oder 7
fuenf|sechs|sieben Eines der Worte fünf, sechs oder sieben
80[234]?86> "8086", "80286", "80386", "80486"
F(ahr|lug)zeug "Fahrzeug" oder "Flugzeug"

sed/grep

0\{5,\}* Fünf oder mehr Nullen in Folge
[0-9]-[0-9]\{3\}-[0-9]\{5\}-[0-9X]* ISBN-Nummern in der Form n-nnn-nnnnn-n, das letzte Zeichen kann auch ein X sein

vim

\<The Wörter wie "Theater" oder "Thema"
ung\> Wörter wie "Teilung" oder "Endung"
\<Wort\> Das Wort "Wort"
s/.*/( & )/ Leerzeichen wurden durch _ Tabulatoren durch TAB eretzt. Ex-Befehle werden mit Doppelpunkt eingeleitet.
s/.*/mv & &.old/ Wiederholt die ganze Zeile, fügt aber Klammern hinzu
/^$/d Formt eine Wortliste (ein Wort pro Zeile) zu mv-Befehlen um
/^[_TAB]*$/d Löscht Leerzeilen
/ */ /g Löscht Leerzeilen und Zeilen, die nur aus Leerzeichen oder Tabulatoren bestehen
:s/[0-9]/Element &:/ Wandelt ein oder mehrere Leerzeichen in ein Leerzeichen um
:s Wandelt (in der aktuellen Zeile) eine Zahl in ein Label für ein Element um
:& Wiederholt die Substitution beim ersten Vorkommen
:sg Wie oben
:&g Wie oben, aber für alle Vorkommen in einer Zeile
:%&g Wie oben
:.,$s/Wort/\U&/g Wiederholt die Substitution im ganzen Puffer
:%s/.*/\L&/ Wandelt von der aktuellen bis zur letzten Zeile das Wort Wort in Großschreibung um
:s/\<./\u&/g Wandelt die gesamte Datei in Kleinschreibung um
:%s/ja/nein/g Wandelt den ersten Buchstaben jedes Wortes in der aktuellen Zeile in Großschreibung um
:%s/Ja/~/g Ersetzt global ein anderes Wort (Ja) durch nein (Wiederverwendung des vorherigen Ersatzmusters)