1
0
mirror of https://github.com/php/doc-de.git synced 2026-03-23 23:02:13 +01:00
Files
archived-doc-de/reference/pcre/pattern.modifiers.xml
Martin Samesch d4193cb6b9 Sync with EN
2024-12-14 22:05:42 +01:00

237 lines
9.9 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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>(?&lt;name&gt;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></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
-->