Heim  >  Artikel  >  Backend-Entwicklung  >  Reguläre PHP-Ausdrücke: So extrahieren Sie mehrere Teilzeichenfolgen aus einer Zeichenfolge

Reguläre PHP-Ausdrücke: So extrahieren Sie mehrere Teilzeichenfolgen aus einer Zeichenfolge

WBOY
WBOYOriginal
2023-06-23 08:38:581236Durchsuche

In PHP sind reguläre Ausdrücke ein häufig verwendetes Tool zum Abgleich von Zeichenfolgen. Durch reguläre Ausdrücke können wir die erforderlichen Informationen einfach aus einer Zeichenfolge extrahieren. In diesem Artikel wird erläutert, wie Sie mithilfe regulärer PHP-Ausdrücke mehrere Teilzeichenfolgen aus einer Zeichenfolge extrahieren.

  1. preg_match_all-Funktion
    PHP stellt die preg_match_all-Funktion zur Verfügung, mit der alle Teilzeichenfolgen gefunden werden können, die einem bestimmten Muster in einer Zeichenfolge entsprechen. Die Syntax dieser Funktion lautet:
preg_match_all($pattern, $string, &$matches, $flags = PREG_PATTERN_ORDER, $offset = 0);

wobei $pattern den regulären Ausdruck darstellt, der abgeglichen werden muss, $string die Zeichenfolge darstellt, die abgeglichen werden muss, und $matches ein Array ist, das zum Speichern aller abgeglichenen Ergebnisse verwendet wird. $flags stellt das Übereinstimmungsflag dar, das PREG_PATTERN_ORDER oder PREG_SET_ORDER sein kann. $offset stellt die Startposition des Abgleichs dar, die standardmäßig 0 ist.

Das Folgende ist ein konkretes Beispiel. Angenommen, wir müssen alle Zahlen aus einer Zeichenfolge abgleichen:

$str = 'abc123def456ghi789jkl';
preg_match_all('/d+/', $str, $matches);
print_r($matches[0]);

Das Ausgabeergebnis lautet:

Array
(
    [0] => 123
    [1] => 456
    [2] => 789
)

Wie aus den Ergebnissen hervorgeht, lautet das von der Funktion preg_match_all zurückgegebene Array $matches: Das erste Element stellt das Ergebnis dar, das mit dem gesamten regulären Ausdruck übereinstimmt, und die folgenden Elemente stellen das Ergebnis dar, das jeder Klammer im regulären Ausdruck entspricht.

  1. Klammergruppierung
    In regulären Ausdrücken können wir Klammern verwenden, um den Inhalt zu gruppieren, der abgeglichen werden muss. Beispielsweise können wir Klammern verwenden, um die Zahlen und Buchstaben zu trennen, die abgeglichen werden müssen, und sie dann jeweils zuordnen:
$str = 'abc123def456ghi789jkl';
preg_match_all('/([a-z]+)(d+)/', $str, $matches);
print_r($matches);

Das Ausgabeergebnis ist:

Array
(
    [0] => Array
        (
            [0] => abc123
            [1] => def456
            [2] => ghi789
        )

    [1] => Array
        (
            [0] => abc
            [1] => def
            [2] => ghi
        )

    [2] => Array
        (
            [0] => 123
            [1] => 456
            [2] => 789
        )

)

Wie aus dem Ergebnis ersichtlich ist, ist das erste Element in der Das $matches-Array ist der gesamte reguläre Ausdruck. Das Übereinstimmungsergebnis, die folgenden Elemente entsprechen dem Übereinstimmungsergebnis jeder Klammer im regulären Ausdruck. Auf diese Weise können wir problemlos mehrere Teilzeichenfolgen aus der Zeichenfolge extrahieren.

  1. Nicht-Greedy-Modus
    Standardmäßig werden reguläre Ausdrücke im Greedy-Modus abgeglichen, was bedeutet, dass so viele Zeichen wie möglich abgeglichen werden. Für die Zeichenfolge „aabbcc“ hoffen wir beispielsweise auf eine Übereinstimmung mit „aa“ und „bb“. nicht das, was wir erwartet hatten.

Um dieses Problem zu lösen, können wir den Non-Greedy-Modus verwenden, der so wenige Zeichen wie möglich abgleicht. Verwenden Sie in regulären Ausdrücken Fragezeichen, um nicht gierige Muster anzuzeigen. Um beispielsweise im obigen Beispiel „aa“ und „bb“ abzugleichen, würden Sie den regulären Ausdruck „/a.+?b/“ verwenden.

$str = 'aabbcc';
preg_match_all('/a.+?b/', $str, $matches);
print_r($matches[0]);

Das Ausgabeergebnis ist:

Array
(
    [0] => aa
    [1] => bb
)

Wie aus den Ergebnissen ersichtlich ist, kann uns der nicht gierige Modus dabei helfen, genau die Ergebnisse zu erzielen, die wir benötigen.

Zusammenfassung
In diesem Artikel wird erläutert, wie Sie mithilfe regulärer PHP-Ausdrücke mehrere Teilzeichenfolgen aus einer Zeichenfolge extrahieren. Durch die Funktion preg_match_all, die Klammergruppierung und den Non-Greedy-Modus können wir flexibel mit verschiedenen Situationen umgehen und die erforderlichen Informationen extrahieren. In der tatsächlichen Entwicklung kann die Verwendung regulärer Ausdrücke die Effizienz und Erfolgsrate des String-Abgleichs erheblich verbessern.

Das obige ist der detaillierte Inhalt vonReguläre PHP-Ausdrücke: So extrahieren Sie mehrere Teilzeichenfolgen aus einer Zeichenfolge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn