The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
  <link rel="SHORTCUT ICON" href="../bilder//pl.ico">
  <title>Mehr zur Zeichensuche  </title>
 </head>
 <body bgcolor="#ffffff">
  <hr>
  <h1 align="center">Mehr zur Zeichensuche</h1>
  <table align="center"><tr>
  <td><a href="perl_reg.html">  <img src="../bilder//perl_links.gif" alt="[ vorherige Seite ]" width="43" height="30" border="0"></a></td>
  <td><a href="../perl-tutorial.html">  <img src="../bilder//perl_titel.gif" alt="[ Titelseite ]" width="81" height="22" border="0"></a></td>
  <td><a href="perl_inhalt.html">  <img src="../bilder//perl_inhalt.gif" alt="[ Inhalt ]" width="57" height="22" border="0"></a></td>
  <td><a href="perl_index.html">  <img src="../bilder//perl_index.gif" alt="[ Index ]" width="54" height="22" border="0"></a></td>
  <td><a href="perl_sub.html">  <img src="../bilder//perl_rechts.gif" alt="[ n&auml;chste Seite ]" width="43" height="30" border="0"></a></td>
  </tr></table>
  <hr>

  <ul>
<li><a href="#abs1">Optionen beim Suchoperator</a></li>
<li><a href="#abs2">Optionen innerhalb eines regul&auml;ren Ausdrucks</a></li>
<li><a href="#abs3">Spezielle Variablen</a></li>
<li><a href="#abs4">Suchen und Ersetzen</a></li>
  </ul>
  <a name="abs1"></a><hr>
  <h2 align="center">Optionen beim Suchoperator</h2>
  <hr>
  <p>

Das Verhalten bei der Suche kann durch nachgestellte Optionen beeinflu&szlig;t
werden:
  </p>
  <ul>
   <li>
<code>g</code> ("<i>global</i>")    <p>

    W&auml;hrend standardm&auml;&szlig;ig die Suche beim ersten Treffer
    abgebrochen wird, veranla&szlig;t diese Option die Ausgabe einer
    Liste von L&ouml;sungen, so als w&uuml;rde man die Stelle nach einem
    gefundenen Substring als Startpunkt f&uuml;r eine erneute Suche
    verwenden.
        </p>
    <p>

    Beispiel:
        </p>
<table align="center" bgcolor="#ffcc99" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ffffcc" border="0" cellpadding="10" width="100%">
<tr><td><code>#!/usr/local/bin/perl&nbsp;-w<br><br>use&nbsp;strict;<br><br>my&nbsp;$t&nbsp;=&nbsp;"123-456-789";<br><br>my&nbsp;@a&nbsp;=&nbsp;($t&nbsp;=~&nbsp;/[1-9]{3}/<font color="#0000cc">g</font>);&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">#&nbsp;Suche&nbsp;nach&nbsp;Zifferntripel</font><br>foreach&nbsp;my&nbsp;$x&nbsp;(@a)&nbsp;{&nbsp;print&nbsp;"$x&nbsp;"&nbsp;}<br>print&nbsp;"\n";<br><br>foreach&nbsp;my&nbsp;$x&nbsp;($t&nbsp;=~&nbsp;/[1-9]{3}/<font color="#0000cc">g</font>)&nbsp;{&nbsp;print&nbsp;"$x&nbsp;"&nbsp;}<br>print&nbsp;"\n";<br><br>while($t&nbsp;=~&nbsp;/[1-9]{3}/<font color="#0000cc">g</font>)&nbsp;{&nbsp;print&nbsp;"$&amp;&nbsp;"&nbsp;}<br>print&nbsp;"\n";<br></code></td></tr></table>
</td></tr></table>
<table align="center" bgcolor="#66cc66" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ccffcc" border="0" cellpadding="5" width="100%">
<tr><td><code>123&nbsp;456&nbsp;789&nbsp;<br>123&nbsp;456&nbsp;789&nbsp;<br>123&nbsp;456&nbsp;789&nbsp;<br></code></td></tr></table>
</td></tr></table>
    <p>

    Der erste Teil zeigt, wie die Suchoperation eine Liste aller
    gefundenen Substrings zur&uuml;ckgibt. Anstelle der Zuweisung zu
    einem Array kann auch <code>foreach</code> direkt die L&ouml;sungsliste
    durchlaufen. Sehr h&auml;ufig verwendet man auch die dritte dargestellte
    Methode: schrittweises Durchsuchen der Zeichenkette mittels einer
    <code>while</code>-Schleife.
        </p>
    <p>

    Es ist zu beachten, da&szlig; die Suche nach einer weiteren L&ouml;sung
    jeweils hinter dem zuvor gefundenen Muster beginnt. Daher gibt folgendes
    Skript nur die eine L&ouml;sung "<code>-ab-</code>" aus (und
    nicht noch "<code>-cd-</code>" zus&auml;tzlich).
        </p>
<table align="center" bgcolor="#ffcc99" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ffffcc" border="0" cellpadding="10" width="100%">
<tr><td><code>#!/usr/local/bin/perl&nbsp;-w<br><br>use&nbsp;strict;<br><br>my&nbsp;$t&nbsp;=&nbsp;"-ab-cd-";<br><br>foreach($t&nbsp;=~&nbsp;/-[a-z][a-z]-/<font color="#0000cc">g</font>)&nbsp;{&nbsp;print&nbsp;"$_&nbsp;"&nbsp;}<br></code></td></tr></table>
</td></tr></table>
   </li>
   <li>
<code>i</code> ("<i>case-insensitive</i>")    <p>

    Verwendet man diese Option, wird bei der Suche nach Buchstaben nicht
    zwischen Gro&szlig;- und Kleinschreibung unterschieden (dies funktioniert
    auch bei nationalen Sonderzeichen wie den deutschen Umlauten sofern das
    Betriebssystem die entsprechende Sprachumgebung unterst&uuml;tzt).
        </p>
    <p>

    Beispiel:
        </p>
<table align="center" bgcolor="#ffcc99" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ffffcc" border="0" cellpadding="10" width="100%">
<tr><td><code>#!/usr/local/bin/perl&nbsp;-w<br><br>use&nbsp;strict;<br><br>my&nbsp;$t&nbsp;=&nbsp;"&Auml;hnlichkeit";<br><br>if($t&nbsp;=~&nbsp;/&auml;hn/)&nbsp;&nbsp;{&nbsp;print&nbsp;"wahr\n"&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{&nbsp;print&nbsp;"falsch\n"&nbsp;}<br>if($t&nbsp;=~&nbsp;/&auml;hn/<font color="#0000cc">i</font>)&nbsp;{&nbsp;print&nbsp;"wahr\n"&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{&nbsp;print&nbsp;"falsch\n"&nbsp;}<br></code></td></tr></table>
</td></tr></table>
<table align="center" bgcolor="#66cc66" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ccffcc" border="0" cellpadding="5" width="100%">
<tr><td><code>falsch<br>wahr<br></code></td></tr></table>
</td></tr></table>
   </li>
   <li>
<code>s</code> ("<i>single line</i>")    <p>

    Hiermit wird eine Zeichenkette als einzelne Zeile betrachtet, auch
    wenn sie Zeilenvorsch&uuml;be ("<code>\n</code>") enth&auml;lt.
    Dadurch entf&auml;llt dann in einem Suchmuster die Sonderrolle
    von "<code>\n</code>" bez&uuml;glich des Punktes
    ("<code>.</code>"), der sonst nur auf alle anderen Zeichen,
    nicht aber den Zeilenvorschub, pa&szlig;t.
        </p>
    <p>

    Beispiel:
        </p>
<table align="center" bgcolor="#ffcc99" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ffffcc" border="0" cellpadding="10" width="100%">
<tr><td><code>#!/usr/local/bin/perl&nbsp;-w<br><br>use&nbsp;strict;<br><br>my&nbsp;$t&nbsp;=&nbsp;"AAA\nBBB\n";<br><br>if($t&nbsp;=~&nbsp;/A.B/)&nbsp;&nbsp;{&nbsp;print&nbsp;"wahr\n"&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{&nbsp;print&nbsp;"falsch\n"&nbsp;}<br>if($t&nbsp;=~&nbsp;/A.B/<font color="#0000cc">s</font>)&nbsp;{&nbsp;print&nbsp;"wahr\n"&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{&nbsp;print&nbsp;"falsch\n"&nbsp;}<br></code></td></tr></table>
</td></tr></table>
<table align="center" bgcolor="#66cc66" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ccffcc" border="0" cellpadding="5" width="100%">
<tr><td><code>falsch<br>wahr<br></code></td></tr></table>
</td></tr></table>
   </li>
   <li>
<code>m</code> ("<i>multiple lines</i>")    <p>

    Verwendet man diese Option, so passen die Ankerpunkte
    "<code>^</code>" und "<code>$</code>" nicht nur am
    Anfang bzw. Ende der vorgegebenen Zeichenkette,
    sondern auch an jedem Zeilenanfang und -ende. Um einen Ankerpunkt an
    den Anfang oder das Ende des untersuchten Strings zu setzen, mu&szlig;
    in diesem Falle "<code>\A</code>" bzw. "<code>\Z</code>"
    verwendet werden.
        </p>
    <p>

    Beispiel:
        </p>
<table align="center" bgcolor="#ffcc99" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ffffcc" border="0" cellpadding="10" width="100%">
<tr><td><code>#!/usr/local/bin/perl&nbsp;-w<br><br>use&nbsp;strict;<br><br>my&nbsp;$t&nbsp;=&nbsp;"Kugel&nbsp;1\nPyramide&nbsp;2\nQuader&nbsp;3\n";<br><br>my&nbsp;@a&nbsp;=&nbsp;($t&nbsp;=~&nbsp;/^\w+/g);<br>foreach&nbsp;(@a)&nbsp;{&nbsp;print&nbsp;"1)&nbsp;$_\n"&nbsp;}<br>@a&nbsp;=&nbsp;($t&nbsp;=~&nbsp;/^\w+/g<font color="#0000cc">m</font>);<br>foreach&nbsp;(@a)&nbsp;{&nbsp;print&nbsp;"2)&nbsp;$_\n"&nbsp;}<br></code></td></tr></table>
</td></tr></table>
<table align="center" bgcolor="#66cc66" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ccffcc" border="0" cellpadding="5" width="100%">
<tr><td><code>1)&nbsp;Kugel<br>2)&nbsp;Kugel<br>2)&nbsp;Pyramide<br>2)&nbsp;Quader<br></code></td></tr></table>
</td></tr></table>
   </li>
   <li>
<code>o</code> ("<i>compile once</i>")    <p>

    Diese Option dient der Optimierung der Mustersuche (hinsichtlich der
    Geschwindigkeit) und sollte nur verwendet werden, wenn dies unbedingt
    n&ouml;tig ist. Ihre Wirkung besteht darin, da&szlig; eine
    Variablenersetzung im Suchmuster nur einmal zu Beginn
    stattfindet. Daher mu&szlig; sichergestellt sein, da&szlig; sich
    die entsprechenden
    Variablen w&auml;hrend der Suche nicht &auml;ndern.
        </p>
    <p>

    Beispiel:
        </p>
<table align="center" bgcolor="#ffcc99" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ffffcc" border="0" cellpadding="10" width="100%">
<tr><td><code>#!/usr/local/bin/perl&nbsp;-w<br><br>use&nbsp;strict;<br><br>my&nbsp;$t&nbsp;=&nbsp;"123..abc...456";<br><br>my&nbsp;$muster&nbsp;=&nbsp;'0-9';<br>while($t&nbsp;=~&nbsp;/[$muster]+/g)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;$muster&nbsp;=&nbsp;'a-z';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">#&nbsp;Zeichenklasse&nbsp;&auml;ndern</font><br>&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"1)&nbsp;$&amp;\n";<br>}<br><br>$muster&nbsp;=&nbsp;'0-9';<br>while($t&nbsp;=~&nbsp;/[$muster]+/g<font color="#0000cc">o</font>)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;$muster&nbsp;=&nbsp;'a-z';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">#&nbsp;hier&nbsp;wirkungslos</font><br>&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"2)&nbsp;$&amp;\n";<br>}<br></code></td></tr></table>
</td></tr></table>
<table align="center" bgcolor="#66cc66" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ccffcc" border="0" cellpadding="5" width="100%">
<tr><td><code>1)&nbsp;123<br>1)&nbsp;abc<br>2)&nbsp;123<br>2)&nbsp;456<br></code></td></tr></table>
</td></tr></table>
    <p>

Hier sieht man nebenbei, da&szlig; Suchmuster durchaus auch in Variablen
gespeichert werden k&ouml;nnen.
    </p>
   </li>
   <li>
<code>x</code> ("<i>extended</i>")    <p>

    Um komplizierte regul&auml;re Ausdr&uuml;cke &uuml;bersichtlicher
    darstellen zu k&ouml;nnen, gibt es die Option "<code>x</code>",
    die es erm&ouml;glicht, Ausdr&uuml;cke auf mehrere Zeilen zu verteilen
    und (normale) Perl-Kommentare einzuf&uuml;gen.
        </p>
    <p>

    Beispiel:
        </p>
<table align="center" bgcolor="#ffcc99" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ffffcc" border="0" cellpadding="10" width="100%">
<tr><td><code>#!/usr/local/bin/perl&nbsp;-w<br><br>use&nbsp;strict;<br><br>my&nbsp;$t&nbsp;=&nbsp;'...&lt;IMG&nbsp;SRC="pfad/bild.gif"&nbsp;WIDTH=110&gt;...';<br><br>$t&nbsp;=~&nbsp;/&lt;IMG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">#&nbsp;HTML-Tag&nbsp;f&uuml;r&nbsp;Bild&nbsp;(Beginn)</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\s+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">#&nbsp;Leerzeichen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SRC="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">#&nbsp;Hier&nbsp;kommt&nbsp;der&nbsp;URL</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(.+?)&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">#&nbsp;Diesen&nbsp;Pfad&nbsp;suchen&nbsp;wir</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">#&nbsp;Ende&nbsp;des&nbsp;URL</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.*?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">#&nbsp;vielleicht&nbsp;noch&nbsp;Optionen</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">#&nbsp;Ende&nbsp;des&nbsp;HTML-Tags</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/i<font color="#0000cc">x</font>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">#&nbsp;case-insensitive,&nbsp;extended</font><br><br>print&nbsp;"$1\n";<br></code></td></tr></table>
</td></tr></table>
<table align="center" bgcolor="#66cc66" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ccffcc" border="0" cellpadding="5" width="100%">
<tr><td><code>pfad/bild.gif<br></code></td></tr></table>
</td></tr></table>
   </li>
  </ul>
<p align="right"><a href="perl_suche2.html">[Seitenanfang]</a></p>
  <a name="abs2"></a><hr>
  <h2 align="center">Optionen innerhalb eines regul&auml;ren Ausdrucks</h2>
  <hr>
  <p>

Die im vorherigen Abschnitt beschriebenen global wirkenden Optionen
k&ouml;nnen auch innerhalb eines regul&auml;ren Ausdrucks gesetzt
werden, um beispielsweise nur Teile davon zu beeinflussen.
Dies wird durch 
"<code>(?</code><i>Option(en)</i><code>)</code>" bewerkstelligt.
Hierbei k&ouml;nnen die Optionen <code>i</code>, <code>m</code>,
<code>s</code> und <code>x</code> verwendet werden. Die Wirkung
erstreckt sich bis zum Ende des regul&auml;ren Ausdrucks, innerhalb einer
Gruppierung oder bis zu einer Deaktivierung mittels
"<code>(?-</code><i>Option(en)</i><code>)</code>".
  </p>
<table align="center" bgcolor="#ffcc99" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ffffcc" border="0" cellpadding="10" width="100%">
<tr><td><code>#!/usr/local/bin/perl&nbsp;-w<br><br>use&nbsp;strict;<br><br>my&nbsp;$t&nbsp;=&nbsp;"ABcd";<br><br>$t&nbsp;=~&nbsp;/[a-z][a-z]/<font color="#0000cc">i</font>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"$&amp;\n";&nbsp;<font color="#006600">#&nbsp;1</font><br>$t&nbsp;=~&nbsp;/<font color="#0000cc">(?i)</font>[a-z][a-z]/;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"$&amp;\n";&nbsp;<font color="#006600">#&nbsp;2</font><br>$t&nbsp;=~&nbsp;/(<font color="#0000cc">(?i)</font>[a-z])[a-z]/;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"$&amp;\n";&nbsp;<font color="#006600">#&nbsp;3</font><br>$t&nbsp;=~&nbsp;/[a-z]<font color="#0000cc">(?i)</font>[a-z]/;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"$&amp;\n";&nbsp;<font color="#006600">#&nbsp;4</font><br>$t&nbsp;=~&nbsp;/<font color="#0000cc">(?i)</font>[a-z]<font color="#0000cc">(?-i)</font>[a-z]/;&nbsp;print&nbsp;"$&amp;\n";&nbsp;<font color="#006600">#&nbsp;5</font><br></code></td></tr></table>
</td></tr></table>
<table align="center" bgcolor="#66cc66" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ccffcc" border="0" cellpadding="5" width="100%">
<tr><td><code>AB<br>AB<br>Bc<br>cd<br>Bc<br></code></td></tr></table>
</td></tr></table>
  <p>

Test 2 ist &auml;quivalent zu Test 1. In Test&nbsp;3 ist wegen der
Klammerung nur f&uuml;r den ersten Buchstaben Gro&szlig;schrift erlaubt.
Da in Test&nbsp;4 der erste Buchstabe klein geschrieben sein mu&szlig;,
kommt nur "<code>cd</code>" als L&ouml;sung infrage. Die letzte
Zeile zeigt wie man eine Option wieder abschalten kann (entspricht
Test&nbsp;3).
  </p>
<p align="right"><a href="perl_suche2.html">[Seitenanfang]</a></p>
  <a name="abs3"></a><hr>
  <h2 align="center">Spezielle Variablen</h2>
  <hr>
  <p>

In den vorherigen Abschnitten wurden schon einige spezielle Perl-Variablen
im Zusammenhang mit der Mustersuche erw&auml;hnt; hier eine &Uuml;bersicht:
  </p>
  <ul>
   <li>
<code>$&amp;</code> gibt das gefundene Muster zur&uuml;ck   </li>
   <li>
<code>$1,$2,$3,...</code> enth&auml;lt das Muster der 1.,2.,3.,...
      runden Klammer   </li>
   <li>
<code>$+</code> enth&auml;lt das Muster der letzten runden Klammer   </li>
   <li>
<code>$`</code> enth&auml;lt die Zeichenkette, die vor dem gefundenen 
      Muster steht   </li>
   <li>
<code>$'</code> enth&auml;lt die Zeichenkette, die hinter dem gefundenen 
      Muster steht    </li>
  </ul>
  <p>

Beispiel:
  </p>
<table align="center" bgcolor="#ffcc99" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ffffcc" border="0" cellpadding="10" width="100%">
<tr><td><code>#!/usr/local/bin/perl&nbsp;-w<br><br>use&nbsp;strict;<br><br>my&nbsp;$s&nbsp;=&nbsp;"Dies&nbsp;ist&nbsp;ein&nbsp;Test&nbsp;...";<br><br>if($s&nbsp;=~&nbsp;/is<font color="#0000cc">(</font>[a-z]<font color="#0000cc">)</font>&nbsp;<font color="#0000cc">(</font>.*<font color="#0000cc">)</font>&nbsp;Test/)&nbsp;{<br>&nbsp;&nbsp;print&nbsp;<font color="#0000cc">$&amp;</font>."\n";<br>&nbsp;&nbsp;print&nbsp;<font color="#0000cc">$1</font>."\n";<br>&nbsp;&nbsp;print&nbsp;<font color="#0000cc">$2</font>."\n";<br>&nbsp;&nbsp;print&nbsp;<font color="#0000cc">$+</font>."\n";<br>&nbsp;&nbsp;print&nbsp;<font color="#0000cc">$`</font>."\n";<br>&nbsp;&nbsp;print&nbsp;<font color="#0000cc">$'</font>."\n";<br>}<br></code></td></tr></table>
</td></tr></table>
<table align="center" bgcolor="#66cc66" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ccffcc" border="0" cellpadding="5" width="100%">
<tr><td><code>ist&nbsp;ein&nbsp;Test<br>t<br>ein<br>ein<br>Dies&nbsp;<br>&nbsp;...<br></code></td></tr></table>
</td></tr></table>
<p align="right"><a href="perl_suche2.html">[Seitenanfang]</a></p>
  <a name="abs4"></a><hr>
  <h2 align="center">Suchen und Ersetzen</h2>
  <hr>
  <p>

Anstelle einer einfachen Suche kann man in Perl auch den gefundenen
Ausdruck direkt durch einen neuen ersetzen.
Allgemein:
  </p>
  <blockquote>

  <code>$string =~ s/</code><i>Regexp</i><code>/</code><i>Ersatz</i><code>/</code><i>Optionen</i><code>;</code>
  </blockquote>
  <p>

Dabei wird wie beim Suchoperator ("<code>m/.../</code>")
<code>$string</code> nach
einer zu <i>Regexp</i> passenden Zeichenkette durchsucht. Wird ein solcher
Teilstring gefunden, so wird an dessen Stelle der Text <i>Ersatz</i> gesetzt.
  </p>
  <p>

Beispiel:
  </p>
<table align="center" bgcolor="#ffcc99" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ffffcc" border="0" cellpadding="10" width="100%">
<tr><td><code>#!/usr/local/bin/perl&nbsp;-w<br><br>use&nbsp;strict;<br><br>my&nbsp;$t&nbsp;=&nbsp;"Beispiel";<br><font color="#0000cc">$t&nbsp;=~&nbsp;s/e/-e-/;</font><br>print&nbsp;"$t\n";<br></code></td></tr></table>
</td></tr></table>
<table align="center" bgcolor="#66cc66" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ccffcc" border="0" cellpadding="5" width="100%">
<tr><td><code>B-e-ispiel<br></code></td></tr></table>
</td></tr></table>
  <p>

Im obigen Beispiel wird der String <code>$t</code> nach dem Buchstaben
"<code>e</code>" abgesucht und (beim ersten Auffinden) durch die
Zeichenkette "<code>-e-</code>" ersetzt.
  </p>
  <p>

Auch beim Suchen und Ersetzen k&ouml;nnen die Schr&auml;gstriche des Operators
durch andere Zeichen ersetzt werden (keine alphanumerischen Symbole oder
Leerzeichen).
  </p>
  <p>

Es k&ouml;nnen die gleichen Optionen wie beim Suchoperator verwendet werden,
ihre Wirkung bezieht sich dabei auf den regul&auml;ren Ausdruck.
Eine zus&auml;tzliche Option erm&ouml;glicht die Auswertung
des <i>Ersatz</i>-Teils.
  </p>
  <p>

Optionen:
  </p>
  <ul>
   <li>
<code>g</code> ("<i>global</i>")    <p>

    (siehe <a href="#abs1">Optionen beim Suchoperator</a>)
        </p>
   </li>
   <li>
<code>i</code> ("<i>case-insensitive</i>")    <p>

    (siehe <a href="#abs1">Optionen beim Suchoperator</a>)
        </p>
   </li>
   <li>
<code>s</code> ("<i>single line</i>")    <p>

    (siehe <a href="#abs1">Optionen beim Suchoperator</a>)
        </p>
   </li>
   <li>
<code>m</code> ("<i>multiple lines</i>")    <p>

    (siehe <a href="#abs1">Optionen beim Suchoperator</a>)
        </p>
   </li>
   <li>
<code>o</code> ("<i>compile once</i>")    <p>

    (siehe <a href="#abs1">Optionen beim Suchoperator</a>)
        </p>
   </li>
   <li>
<code>x</code> ("<i>extended</i>")    <p>

    (siehe <a href="#abs1">Optionen beim Suchoperator</a>)
        </p>
   </li>
   <li>
<code>e</code> ("<i>evaluate</i>")    <p>

    Diese Option bewirkt, da&szlig; beim Ersetzen der einzusetzende
    Ausdruck wie
    ein Befehl in Perl behandelt und ausgewertet wird. Dies kann sogar mehrfach
    geschehen.
        </p>
    <p>

    Beispiel:
        </p>
<table align="center" bgcolor="#ffcc99" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ffffcc" border="0" cellpadding="10" width="100%">
<tr><td><code>#!/usr/local/bin/perl&nbsp;-w<br><br>use&nbsp;strict;<br><br>my&nbsp;$t&nbsp;=&nbsp;"5+7";<br><br>$t&nbsp;=~&nbsp;s|^(\d+)\+(\d+)$|$1+$2|<font color="#0000cc">e</font>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#006600">#&nbsp;hier&nbsp;'|'&nbsp;statt&nbsp;'/'</font><br>print&nbsp;"$t\n\n";<br><br>$t&nbsp;=&nbsp;'_x_';<br><br>(my&nbsp;$s&nbsp;=&nbsp;$t)&nbsp;=~&nbsp;s/x+/'"m"&nbsp;x&nbsp;3'&nbsp;x&nbsp;1/;<br>print&nbsp;"$s\n";<br><br>($s&nbsp;=&nbsp;$t)&nbsp;=~&nbsp;s/x+/'"m"&nbsp;x&nbsp;3'&nbsp;x&nbsp;1/<font color="#0000cc">e</font>;<br>print&nbsp;"$s\n";<br><br>($s&nbsp;=&nbsp;$t)&nbsp;=~&nbsp;s/x+/'"m"&nbsp;x&nbsp;3'&nbsp;x&nbsp;1/<font color="#0000cc">ee</font>;<br>print&nbsp;"$s\n";<br></code></td></tr></table>
</td></tr></table>
<table align="center" bgcolor="#66cc66" border="0" cellpadding="2" width="80%"><tr><td>
<table bgcolor="#ccffcc" border="0" cellpadding="5" width="100%">
<tr><td><code>12<br><br>_'"m"&nbsp;x&nbsp;3'&nbsp;x&nbsp;1_<br>_"m"&nbsp;x&nbsp;3_<br>_mmm_<br></code></td></tr></table>
</td></tr></table>
   </li>
  </ul>
<p align="right"><a href="perl_suche2.html">[Seitenanfang]</a></p>
  <hr>
  <table align="center"><tr>
  <td><a href="perl_reg.html">  <img src="../bilder//perl_links.gif" alt="[ vorherige Seite ]" width="43" height="30" border="0"></a></td>
  <td><a href="../perl-tutorial.html">  <img src="../bilder//perl_titel.gif" alt="[ Titelseite ]" width="81" height="22" border="0"></a></td>
  <td><a href="perl_inhalt.html">  <img src="../bilder//perl_inhalt.gif" alt="[ Inhalt ]" width="57" height="22" border="0"></a></td>
  <td><a href="perl_index.html">  <img src="../bilder//perl_index.gif" alt="[ Index ]" width="54" height="22" border="0"></a></td>
  <td><a href="perl_sub.html">  <img src="../bilder//perl_rechts.gif" alt="[ n&auml;chste Seite ]" width="43" height="30" border="0"></a></td>
  </tr></table>
  <hr>
  <table width="100%"><tr>
    <td align="left"><i>Autor: 
       <a href="mailto:Eike.Grote@web.de">Eike&nbsp;Grote</a></i>
    </td>
    <td align="right"><i>Version: 2.05 (24.1.2012)</i>
    </td>
  </tr></table>
 </body>
</html>