mirror of
https://github.com/php/doc-de.git
synced 2026-03-23 23:02:13 +01:00
237 lines
9.9 KiB
XML
237 lines
9.9 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: c43393d1b64a41be1b8c45f997062b0f645bc91e Maintainer: samesch Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<article xml:id="reference.pcre.pattern.modifiers" xmlns="http://docbook.org/ns/docbook">
|
||
<title>Suchmuster-Modifikatoren</title>
|
||
<titleabbrev>Mögliche Modifikatoren in RegEx-Suchmustern</titleabbrev>
|
||
<para>
|
||
Die zurzeit möglichen PCRE-Modifikatoren sind unten aufgelistet. Die
|
||
Bezeichnungen in Klammern beziehen sich auf die internen PCRE-Bezeichnungen
|
||
für diese Modifikatoren. Leerzeichen und Zeilenumbrüche in Modifikatoren
|
||
werden ignoriert. Andere Zeichen führen zu einem Fehler.
|
||
</para>
|
||
<para>
|
||
<blockquote>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><emphasis>i</emphasis> (<literal>PCRE_CASELESS</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Wenn dieser Modifikator gesetzt ist, passen Buchstaben im Suchmuster
|
||
sowohl auf groß- als auch auf kleingeschriebene Buchstaben.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>m</emphasis> (<literal>PCRE_MULTILINE</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Standardmäßig behandelt PCRE eine zu durchsuchende Zeichenkette wie
|
||
eine einzige Zeile von Zeichen (auch wenn sie tatsächlich mehrere
|
||
Zeilenumbrüche enthält). Das Metazeichen für einen Zeilenanfang (^)
|
||
passt nur auf den Anfang der Zeichenkette, das Metazeichen für ein
|
||
Zeilenende ($) nur auf das Ende der Zeichenkette (falls der Modifikator
|
||
<emphasis>D</emphasis> nicht gesetzt ist). Das ist genauso wie bei
|
||
Perl.
|
||
</simpara>
|
||
<simpara>
|
||
Wenn dieser Modifikator gesetzt ist, passen die Zeilenanfang- und
|
||
Zeilenende-Konstrukte in der Zeichenkette sowohl direkt nach, bzw. vor
|
||
einem Zeilenumbruch als auch auf deren Anfang und Ende. Das entspricht
|
||
dem Perl-Modifikator /m. Falls die Zeichenkette keine Sequenz "\n"
|
||
enthält, oder im Suchmuster kein ^ oder $ vorkommt, hat dieser
|
||
Modifikator keine Wirkung.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>s</emphasis> (<literal>PCRE_DOTALL</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Wenn dieser Modifikator gesetzt ist, passt das Metazeichen Punkt im
|
||
Suchmuster auf alle Zeichen inklusive Zeilenumbrüche. Ohne diesen
|
||
Modifikator sind Zeilenumbrüche ausgeschlossen. Dieser Modifikator
|
||
entspricht dem Perl-Modifikator /s. Unabhängig davon, ob dieser
|
||
Modifikator gesetzt ist, passt eine verneinende Zeichenklasse, &zb;
|
||
[^a], immer auf einen Zeilenumbruch.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>x</emphasis> (<literal>PCRE_EXTENDED</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Wenn dieser Modifikator gesetzt ist, werden Leerräume im Suchmuster
|
||
ignoriert, sofern sie nicht maskiert sind oder sich innerhalb einer
|
||
Zeichenklasse befinden. Außerdem werden Zeichen, die außerhalb einer
|
||
Zeichenklasse zwischen nicht maskierten # stehen, einschließlich dem
|
||
nächsten Zeilenumbruch ignoriert. Das entspricht dem Perl-Modifikator
|
||
/x und bietet die Möglichkeit, Kommentare in komplizierte Suchmuster
|
||
einzufügen. Beachten Sie aber, dass dies nur für Datenzeichen gilt.
|
||
Leerräume dürfen niemals innerhalb einer Folge spezieller Zeichen
|
||
auftreten, zum Beispiel in der Folge (?(, die einen
|
||
bedingten Teilausdruck einleitet.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>A</emphasis> (<literal>PCRE_ANCHORED</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Wenn dieser Modifikator gesetzt ist, wird das Suchmuster "verankert",
|
||
das bedeutet, dass es gezwungen wird, nur auf den Anfang der
|
||
durchsuchten Zeichenkette zu passen. Diese Wirkung kann auch durch
|
||
geeignete Konstrukte im Suchmuster selbst erreicht werden, was in Perl
|
||
die einzige Möglichkeit ist, sie zu realisieren.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>D</emphasis> (<literal>PCRE_DOLLAR_ENDONLY</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Wenn dieser Modifikator gesetzt ist, passt ein Dollar-Metazeichen im
|
||
Suchmuster nur auf das Ende der durchsuchten Zeichenkette. Ohne diesen
|
||
Modifikator passt ein Dollarzeichen auch direkt vor dem letzten
|
||
Zeichen, falls es ein Zeilenumbruch ist (aber nicht vor anderen
|
||
Zeilenumbrüchen). Wenn der Modifikator <emphasis>m</emphasis> gesetzt
|
||
ist, wird dieser Modifikator ignoriert. Für diesen Modifikator gibt es
|
||
in Perl keine Entsprechung.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>S</emphasis></term>
|
||
<listitem>
|
||
<simpara>
|
||
Wenn ein Suchmuster mehrmals verwendet werden soll, lohnt es sich, mehr
|
||
Zeit für dessen Analyse aufzubringen um die Suche zu optimieren. Wenn
|
||
dieser Modifikator gesetzt ist, wird diese zusätzliche Analyse
|
||
durchgeführt. Gegenwärtig ist die Untersuchung eines Suchmusters nur
|
||
für nicht verankerte Suchmuster brauchbar, die am Anfang kein einzelnes
|
||
fixiertes Zeichen haben.
|
||
Seit PHP 7.3.0 hat dieses Flag keine Wirkung mehr.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>U</emphasis> (<literal>PCRE_UNGREEDY</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Dieser Modifikator kehrt die Gier von Quantifikatoren um, sodass sie
|
||
standardmäßig nicht gierig sind, aber gierig werden, wenn ihnen ein
|
||
<literal>?</literal> folgt. Das ist nicht mit Perl kompatibel. Es kann
|
||
auch <link linkend="regexp.reference.internal-options">innerhalb des
|
||
Suchmusters</link> mit dem Modifikator <literal>(?U)</literal> oder
|
||
durch ein Fragezeichen hinter dem Quantifikator (&zb;
|
||
<literal>.*?</literal>) gesetzt werden.
|
||
</simpara>
|
||
<note>
|
||
<para>
|
||
Im Ungreedy-Modus ist es nicht möglich, mehr als
|
||
<link linkend="ini.pcre.backtrack-limit">pcre.backtrack_limit</link>
|
||
Übereinstimmungen zu treffen.
|
||
</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>X</emphasis> (<literal>PCRE_EXTRA</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Dieser Modifikator schaltet zusätzliche PCRE-Funktionalität ein, die
|
||
nicht mit Perl kompatibel ist. Ein Backslash vor einem Buchstaben, der
|
||
keine spezielle Bedeutung hat, verursacht eine Fehlermeldung und
|
||
reserviert diese Kombinationen somit für künftige Erweiterungen.
|
||
Standardmäßig wird ein Backslash vor einem Buchstaben, der keine
|
||
spezielle Bedeutung hat, wie in Perl als Buchstabensymbol behandelt.
|
||
Gegenwärtig werden von diesem Modifikator keine weiteren Eigenschaften
|
||
kontrolliert.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>J</emphasis> (<literal>PCRE_INFO_JCHANGED</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Die interne Option (?J) ändert die lokale Option
|
||
<literal>PCRE_DUPNAMES</literal>. Erlaubt doppelte Namen für
|
||
Teilsuchmuster. Von PHP 7.2.0 an wird der
|
||
<literal>J</literal>-Modifikator ebenfalls unterstützt.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>u</emphasis> (<literal>PCRE_UTF8</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Dieser Modifikator schaltet zusätzliche PCRE-Funktionalität ein, die
|
||
nicht mit Perl kompatibel ist. Suchmuster und durchsuchte Zeichenketten
|
||
werden als UTF-8 behandelt. Eine ungültige Zeichenkette bewirkt, dass
|
||
die preg_*-Funktionen keine Übereinstimmungen finden. Ein ungültiges
|
||
Suchmuster erzeugt einen Fehler der Stufe E_WARNING.
|
||
UTF-8-Zeichenfolgen mit fünf oder sechs Oktetten werden als ungültig
|
||
betrachtet.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>n</emphasis> (<literal>PCRE_NO_AUTO_CAPTURE</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Dieser Modifikator bewirkt, dass einfache <code>(xyz)</code>-Gruppen
|
||
nicht erfassend sind. Nur benannte Gruppen wie
|
||
<code>(?<name>xyz)</code> sind erfassend. Dies wirkt sich nur
|
||
darauf aus, welche Gruppen erfassend sind. Es ist weiterhin möglich,
|
||
nummerierte Teilsuchmuster zu verwenden, und das Array matches enthält
|
||
weiterhin nummerierte Ergebnisse. Verfügbar seit PHP 8.2.0.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><emphasis>r</emphasis> (<literal>PCRE2_EXTRA_CASELESS_RESTRICT</literal>)</term>
|
||
<listitem>
|
||
<simpara>
|
||
Wenn <emphasis>u</emphasis> (<literal>PCRE_UTF8</literal>) und
|
||
<emphasis>i</emphasis> (<literal>PCRE_CASELESS</literal>) verwendet
|
||
werden, verhindert dieser Modifikator, dass ASCII- und
|
||
Nicht-ASCII-Zeichen übereinstimmen.
|
||
</simpara>
|
||
<simpara>
|
||
Zum Beispiel passt <code>preg_match('/\x{212A}/iu', "K")</code> auf das
|
||
Kelvin-Zeichen <literal>K</literal> (U+212A).
|
||
Wenn <emphasis>u</emphasis> verwendet wird
|
||
(<code>preg_match('/\x{212A}/iur', "K")</code>), gibt es keine
|
||
Übereinstimmung.
|
||
</simpara>
|
||
<simpara>
|
||
Verfügbar seit PHP 8.4.0.
|
||
</simpara>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</blockquote>
|
||
</para>
|
||
</article>
|
||
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|