Search and Replace für Windows - Reguläre Ausdrücke

Reguläre Ausdrücke können für erweiterte Suchen verwendet werden, in welcher die Such-Zeichenfolgen durch eine Regel beschrieben werden können, daher nicht immer exakt gleich sein müssen. Reguläre Ausdrücke benutzen Sonderzeichen als Operatoren, die die Suche und "den Ausdruck" bestimmen, welcher eine Kombination aus Zeichen und Operatoren ist, die ein Schema definieren. Reguläre Ausdrücke können in Ersetzungen benutzt werden, und sie können Gebrauch von Binärzeichen machen . Beachten Sie bitte, daß Unterschiede bestehen zwischen den Operatoren für reguläre Ausdrücke in Such-Zeichenfolgen und ihren Gegenstücken in Ersetzungs-Zeichenfolgen.

Search & Replace für Windows verwendet reguläre Ausdrücke, deren Basis die UNIX grep Notation (Such-Utility) und die Eingabeparameter-Notation von DOS-Stapeldateien sind, mit einigen Erweiterungen für Ersetzungen. Darüber hinaus werden ebenfalls Groß/Klein-Flags und Binär-Zeichenfolgen in Verbindung mit regulären Ausdrücken unterstützt. Die Hauptunterschiede zwischen den regulären Ausdrücken von Search & Replace und egrep sind: 1) . Operator wird nicht unterstützt 2) *+?! Operatoren müssen einem durch () oder [] eingeschlossenen Ausdruck (etwa wie *[123] oder +(Windows)) vorangestellt sein. Anderenfalls wird angenommen, daß der Operator auf alle Zeichen vom Zeilenanfang, oder bis zum Zeilenende angewendet werden soll.

Such-/Kongruenz-Operatoren in regulären Ausdrücken

*

In Verbindung mit keinem oder mehreren Ausdrücken durch () eingeschlossen, kann auch als Normalzeichen verwendet werden (siehe unten). Dieser Operator ist zum Gebrauch mit Zeichenfolgen gedacht. Die Eingabe von mehreren Ausdrücken nacheinander, die * enthalten, sollte mit Vorsicht vorgenommen werden, um eine Überlappung von Zeichenfolgen zu vermeiden, was zu unvorhersehbaren Ergebnissen führen könnte. Es kann eine Liste von Zeichen angegeben werden, die eine Übereinstimmung erzeugen sollen (Windows *[0-9] gibt als Übereinstimmung auch "Windows 95" aus). Zum Beispiel ergibt

*(is) keine oder mehrere Zeichenfolgen wie: is, isis.

Dieser Operator kann ebenso zur Suche von Zeichenfolgen zwischen zwei Zeichen benutzt werden, z.B. ergibt

*(as) keine oder mehrere Zeichenfolgen wie: as, asis.

Hinweis: Wird der * Operator an den Anfang einer Zeile gesetzt, werden Übereinstimmungen zu allen Zeichen vom Beginn der Zeile gesucht, und an das Ende gesetzt, zu allen Zeichen bis zum Zeilenende. Übereinstimmungen zu Zeichen zwischen zwei oder mehreren Zeichenfolgen bis zu einer Gesamtlänge von 4096 Zeichen (4K) können gefunden werden, indem hinter dem * Operator ein Bereich angegeben wird. Zum Beispiel ergibt

Windows*[\0-ÿ]95Windows*[]95 Übereinstimmungen bis zu einer Länge von 4096 Zeichen (über mehrere Zeilen hinweg) zwischen Windows und 95.

Windows*[0-9] ergibt ebenfalls die selben Übereinstimmungen (ältere Syntax).

Hinweis: Wird * mit einem Zahlenbereich und den Zählern %n> oder %n>Startwert> kombiniert, wäre der obige Suchausdruck Windows*[0-9]Teil einer Zähler-Operation in regulären AusdrückenCOUNTERS.

+

Einer oder mehrere Ausdrücke eingeschlossen durch ().

+(is) ergibt eine oder mehrere Zeichenfolgen wie: is, isis.

?

Genau ein Ausdruck oder irgendein Zeichen, eingeschlossen durch ().

?(is) ergibt eine Übereinstimmung mit is oder si

Dieser Operator kann ebenso zur Suche von irgendeinem Zeichen zwischen zwei Zeichenfolgen, oder vor bzw. hinter einer Zeichenfolge benutzt werden. Dies ist die hauptsächliche Anwendung dieses Operators. Beispielsweise werden mit

Win?95 Treffer wie "Win 95", "Win-95", "Win/95" erreicht, etc.

Hinweis: Bei alleinigem Gebrauch des ? -Operators werden alle Zeichen einer Datei nacheinander als Treffer ausgegeben, dies sollte daher vermieden werden.

!

Gefundene Zeichenfolgen innerhalb des angegebenen Bereiches werden nicht ausgegeben, jedoch außerhalb liegende. Beispielsweise ergibt

!(a-c)at die Zeichenfolgen mat, rat oder fat, jedoch nicht bat oder cat.

Ein anderer Zweck wäre, eine Zeichenfolge zu suchen, die den angegebenen Ausdruck nicht enthält, z.B.

!(Windows )95 ergibt 95 in 1995, jedoch nicht in Windows 95

^

Ein Ausdruck, der am Zeilenanfang steht, z.B.

^the findet the am Zeilenanfang und auch The, falls Groß-/Kleinschreibung beachten deaktiviert ist.

$

Ein Ausdruck, der am Zeilenende steht, z.B.

ende$ findet ende, falls dies die letzte Zeichenfolge einer Zeile ist.

Top | Search & Replace Features | Search & Replace

    

Suche mit regulären Ausdrücken - Operatoren für Unterausdrücke   

[ ]

Falls alleine eingegeben, werden alle Zeichen berücksichtigt, dies ist gleichbedeutend mit ?[]. Falls mit dem * -Operator kombiniert, kann sich die Übereinstimmung über die unter "Maximale Größe regulärer Ausdrücke" eingetragene Länge über mehrere Zeilen hinweg erstrecken. Alternativ kann auch nach einem oder mehreren Zeichen gesucht werden, die in die Klammern eingetragen werden. Bereichsangaben sind über die Schreibweise "a-z" möglich. Der [] -Operator kann hinter den ?* + Operatoren verwendet werden, um den Geltungsbereich dieser Operatoren einzuschränken. Beispielsweise werden mit

t[]e Treffer wie This is line, ttp://www.e erreicht, oder

H[]d über zwei Zeilen hinweg "Hello (cr -lf)World", oder

*[0-9] ergibt 234907, 5795, oder eine leere Zeichenfolge.

[niewW] ergibt eine oder mehrere Zeichenfolgen wie: Win, new, win.

[a-z] ergibt jede klein geschriebene Zeichenfolge bei Beachten von Groß-/Kleinschreibung, oder jedes Wort, falls deaktiviert.

Hinweis: Es kann auch beispielsweise [a-zA-Z0-9\-_] eingegeben werden, also mehrere Bereiche und das - Zeichen selbst (mit vorangestelltem \).

Hinweis: Falls [] mit einem Zahlenbereich, dem * Operator (also z.B. *[0-9]) und den Zählern %n> oder %n>Startwert> kombiniert wird, wäre ein Suchausdruck wie Windows *[0-9] Teil einer Zähler-Operation in regulären Ausdrücken.

( )

Gibt einen oder mehrere Unterausdrücke an. Ausdrücke, die zur Wahl stehen, können durch den | Operator angegeben werden. Beispielsweise ergibt

Win( 95|dows 95) Zeichenfolgen wie "Windows 95"
und "Win 95".

+n

Gibt die übereinstimmende Zeichenzahl vor oder hinter einem Ausdruck an. Verwendung in Verbindung mit anderen Unterausdruck-Operatoren. Es kann ein Bereich angegeben werden, z.B. ergibt

+4[]w Treffer wie "llo W" und "Use W" in den Zeichenfolgen "Hello World" und "Use Windows"

[ ]+5-15[0-9 ] ergibt "100.01", "123.9" und "543.21" in:
               Data1 100.01 Somethin'
               Dat2 123.9 Nuthin'
               Dataa3 543.21 and junk

Top | Search & Replace Features | Search & Replace

    

Suche mit regulären Ausdrücken - Besondere Zeichen

- + * ? ( ) [ ] \ | $ ^ !

Falls nach einem dieser Zeichen gesucht werden soll, müssen diese das \ -Zeichen vorangestellt bekommen, um als normale Zeichen innerhalb einer Suche interpretiert zu werden.

Top | Search & Replace Features | Search & Replace

    

Komplexe Suche mit regulären Ausdrücken

Die oben erwähnten Operatoren können kombiniert werden, um folgende Suchen zu erzeugen:

?include (<|\[)[a-z0-9_].h*(p)+[\]>]

Ergibt:
#include [stdafx.h]
#include <dos.h>
#include [my_include.hpp]
#include [sr32.h]
etc.

Top | Search & Replace Features | Search & Replace

    

Ersetzungs-Operatoren in regulären Ausdrücken

%n

%1 verwendet den ersten Ausdruck in der Such-Zeichenfolge. Falls beispielsweise als Vorgabe

die Such-Zeichenfolge:

 

?include (<|\[)[a-z0-9_].h*(p)+[\]>]

und die Ersetzungs- Zeichenfolge gegeben sind:

 

?include (<|\[)[a-z0-9_].h*(p)+[\]>]
%1exclude [%3>.H%4>]

Könnte das Ergebnis sein:

 

 

#include [stdafx.h]

=>

#exclude [STDAFX.H]

#include <dos.h>

=>

#exclude [DOS.H]

#include [my_include.hpp]

=>

#exclude [MY_INCLUDE.HPP]

#include [sr32.h]

=>

#exclude [SR32.H]

Bitte im Beispiel beachten:
  %1 - ?
  %2 - (<|\[)
  %3 - [a-z0-9_]
  %4 - *(p)
  %5 - +[\]>]

Diese Parameter können in jeder beliebigen Reihenfolge diverse Male benutzt oder ausgelassen werden.

<

Kleinschreibung erzwingen. In Verbindung mit %n verwendet: %1< ersetzt den ersten Treffer durch sein klein geschriebenes Äquivalent.

>

Großschreibung erzwingen. In Verbindung mit %n verwendet: %1> ersetzt den ersten Treffer durch sein groß geschriebenes Äquivalent.

%n>

Zähle Falls in Verbindung mit einer Suche mit regulären Ausdrücken und Zahlen verwendet (z.B. *[0-9]), erhöht %n> den ersten mit *[0-9] gefundenen Wert um +1. Beispiel:

%n>

Zähle Falls in Verbindung mit einer Suche mit regulären Ausdrücken und Zahlen verwendet (z.B. *[0-9]), erhöht %n> den ersten mit *[0-9] gefundenen Wert um +1. Beispiel:

Gegeben:

seite5.htm,

Suchausdruck:

seite2.htm, seite4.htm

Ersetzungsausdruck:

seite*[0-9]

Das Ergebnis wäre:

eite%n>

 

seite6.htm, seite7.htm, seite8.htm

%n>#>

Zähler. Dieser Platzhalter ermöglicht die Angabe eines Startwertes, ab welchem der Ersetzungszähler erhöhen soll. %n>Startwert> erhöht den gegebenen Startwert um +1. Dieser Zähler berücksichtigt außerdem die gegebene Ziffernzahl. Um mit einem Startwert 1 zu beginnen, muß der Ausdruck %n>0> lauten. Der Ausdruck %n>000> würde Ersetzungen mit dem Startwert 001 beginnen. Ein weiteres Beispiel:

Gegeben:

Var19,

Suchausdruck:

Var82

Ersetzungsausdruck:

Var8

Das Ergebnis wäre:

Var*[0-9]

 

n>99>
Var100, Var101, Var102

 

Top | Search & Replace Features | Search & Replace

    

Ersetzungen mit regulären Ausdrücken - Besondere Zeichen (Literale)

% \ < >

Falls eines dieser Zeichen ersetzt werden soll, muß ihnen das \ -Zeichen vorangestellt werden, um als normale Zeichen innerhalb einer Ersetzung interpretiert zu werden.

Top | Search & Replace Features | Search & Replace

    

Einige Grundbeispiele für Suchen mit regulären Ausdrücken

Gesucht

Operator

Beispiele

Jedes Einzelzeichen

?

g?t findet get, got, gut

Jede Zeichenfolge (eine oder mehrere)

+

w+e findet wide, white, write, aber nicht we

Jede Zeichenfolge (oder keine)

*

w*e findet wide, white, write und we

Eines der angegebenen Zeichen

[]

g[eo]t findet get und got aber nicht gut

Eines der Zeichen im Bereich

[-]

[b-p]at findet bat, cat, fat, hat, mat aber nicht rat oder sat

Alle Zeichen

[]

i[] findet line, list, late. [] verwenden, statt einer komplizierten Bereichsangabe wie [a-zA-Z0-9]

Ein Ausdruck oder ein anderer

(|)

W(in|indows) findet Win oder Windows

Einer oder mehrere Ausdrücke

+()

+(at) findet atat in catatonic und at in battle

Alle Zeichen (evtl. in verschiedenen Zeilen)

*[]

h[]d findet "helped", "Hello World", und "Hello (cr lf) Win95 World". [] [] verwenden, statt einer komplizierten Bereichsangabe wie [a-zA-Z0-9]. Hierdurch erstreckt sich die Suche über mehrere Zeilen bis zur Grenze, die durch Maximale Größe regulärer Ausdrücke gesetzt ist.

Zwei "nahe" Zeichenfolgen (evtl. in verschiedenen Zeilen)

*[]

the*[\0-ÿ]first findet "the first" und "the (cr lf) very first

Hinweis: Siehe oben 'Alle Zeichen' (*[]). Dieses Beispiel benutzt eine ältere Syntax. Sonderzeichen werden über den Binärmodus -Dialog eingegeben (Knopf neben den Such- und Ersetzungs-Zeichenfolgen).

Eine Zeichenfolge, die nicht mit einem Ausdruck beginnt

!()

!(http): findet "following:" aber nicht "http://www.funduc.com"

Eines der Zeichen außerhalb des Bereiches

![-]

[b-p]at findet bat, cat, fat, hat, mat aber nicht rat oder sat

Ein Ausdruck am Zeilenanfang

^

^the findet the am Zeilenanfang und The, falls Groß/Klein deaktiviert ist.

Ein Ausdruck am Zeilenende

$

end$ findet end , falls es die letzte Zeichenfolge der Zeile ist.

Eine oder mehrere Spalten vor oder hinter einer Zeichenfolge

+n

[h]+4// findet http:// aber nicht https://

Top | Search & Replace Features | Search & Replace

    

Zusätzliche Suchbeispiele mit regulären Ausdrücken

Suchstring

Übereinstimmung mit

L[]

line, list, lane, LogVar1 (falls Groß/Klein deaktiviert)

[on]

non, no, on

\[

[

+[a-z]

abcdefghijklomopqrstuvwxyz

Hinweis: Falls Groß/Klein deaktiviert, wird ebenfalls ABCDEFGHIJKLMNOPQRSTUVWXYZ gefunden

[a-zA—ZÀ-ÿ]

findet das Gleiche wie das obige Beispiel (unabhängig von Groß/Klein) und ebenfalls alle anderen Sonderzeichen Westeuropäischer Sprachen. Siehe BinärmodusHIDD_BINARY -Dialog zwecks Reihenfolge dieser Zeichen in der ASCII-Tabelle.

+(one|two|three)

one, onetwo, twothree

?(one|two|three)

one,two,three

Windows*[\0-ÿ]95

Findet bis zu 4096 Zeichen (in verschiedenen Zeilen) zwischen Windows und 95.

All * replaces

all the replaces (das * -Zeichen findet alle Zeichen in der gleichen Zeile, sofern ein [] Ausdruck dies nicht ausschließt - siehe oben)

/**[\0-ÿ]*/

findet Kommentare innerhalb verschiedener Zeilen wie in C verwendet (bis zu 4069 Zeichen).

01*[0-9].htm

01346.htm, 01.htm, 016965.htm

*[ab]c

c, abc, bac, abbc, bbac

Top | Search & Replace Features | Search & Replace

    

Such-/Ersetzungsbeispiele mit regulären Ausdrücken

Suchstring

Ersetzung

Auswirkung

*.*

%1>.%2>

c:\windows\win.ini =>

C:\WINDOWS\WIN.INI

+[a-z]

%1>

Windows => WINDOWS

7*.htm

5%1.htm

711.htm => 511.htm

7days.htm => 5days.htm

[253]7[832].htm

%15%2.htm

3572.htm => 3552.htm

*[253]7[832].htm

%15%2.htm

72.htm => 52.htm

(homepage|index).htm

%11.htm

homepage.htm => homepage1.htm

index.htm => index1.htm

+(12)[0-9]

%1%2a

12532 => 12532a

1212753 => 1212753a

???*(d|m).htm

%1%2%3d1.htm

card.htm => card1.htm

form.htm => form1.htm

back2.jpg*[]height="30"

back2.jpg%1height="32"

Eine Suche/Ersetzung über mehrere Zeilen, die die Größenangabe für 'back2.jpg' ändert, unabhängig von unterschiedlichen 'alt' -Texten oder wie der Html-Editor den Code umbricht, z.B.:

src="images/back2.jpg" alt="Go Back"
border="0" width="57"
height="30"

wird zu:

src="images/back2.jpg" alt="Go Back"
border="0" width="57"
height="32"

?(Windows)

OS/2

Windows => OS/2 (kleines Spässle ;o)

Top | Search & Replace Features | Search & Replace

    

Search & Replace -Zähler in regulären Ausdrücken

Zähler-Operationen in Suchen/Ersetzungen mit regulären Ausdrücken ermöglichen schnelle Änderungen an aufeinander folgenden Ziffern in einer oder mehreren Dateien vorzunehmen. Es können auch aufeinander folgende Zahlen in Textstrings eingefügt werden, in denen sie ursprünglich nicht auftraten. Zähleroperationen verwenden den regulären Ausdruck *[0-9] und entweder den Ersetzungs-Platzhalter %n> oder %n>anwenderspezifischer Startwert>.

Der Ersetzungs-Platzhalter %n> erhöht den durch *[0-9] gefundenen Wert um +1 (z.B.*[0-9]+1). Falls beispielsweise der durch *[0-9] gefundene Wert 10 ist, beginnt %n> mit 11.

Der Ersetzungs-Platzhalter %n>anwenderspezifischer Startwert> erhöht jeweils um +1 beginnend mit dem durch den Anwender vorgegebenen [Startwert +1]. Dieser Zähler berücksichtigt ebenfalls die angegebene Ziffernanzahl. Beispielsweise beginnt der Ausdruck %1>1> mit dem Wert 2. Der Ausdruck %1>000> würde mit 001 beginnen.

Zähleroperationen können mit anderen regulären Ausdrücken und Search & Replace Operatoren kombiniert werden. Beispielsweise ist ein Suchausdruck wie (Datei|Variable)*[0-9] und ein Ersetzungs-Platzhalter wie %1%2>100> vollkommen korrekt.

    

Beispiele von Zählern in regulären Ausdrücken

Originalinhalt:
Suchstring:
Ersetzungsstring:
Ergebnis:

Windows 98 wird in 5 Tagen erscheinen.
*[0-9]
%1>
Windows 99 wird in 100 Tagen erscheinen.

Originalinhalt:
Suchstring:
Ersetzungsstring:
Ergebnis:

file.htm, file.htm, ffillee.htm
e*[0-9].htm
e%1>.htm
file2.htm, file3.htm, ffillee4.htm

Originalinhalt:
Suchstring:
Ersetzungsstring:
Ergebnis:

Var22 Var20 Var86 Var30
Var*[0-9]
Var%1>49>
Var50 Var51 Var52 Var53

Originalinhalt:
Suchstring:
Ersetzungsstring:
Ergebnis:

Var22 Var20 Var86 Var30
Var*[0-9]
Var%1>00>
Var01 Var02 Var03 Var04

Originalinhalt:
Suchstring:
Ersetzungsstring:
Ergebnis:

VarA101 VarB12 VarC0 VarA102 VarB45
Var[a-z]*[0-9]
Var%1%2>08>
VarA09 VarB10 VarC11 VarA12 VarB13

Top | Search & Replace Features | Search & Replace