Maison >développement back-end >tutoriel php >Expressions régulières PHP : Comment extraire plusieurs sous-chaînes d'une chaîne

Expressions régulières PHP : Comment extraire plusieurs sous-chaînes d'une chaîne

WBOY
WBOYoriginal
2023-06-23 08:38:581286parcourir

En PHP, les expressions régulières sont un outil de correspondance de chaînes couramment utilisé. Grâce aux expressions régulières, nous pouvons facilement extraire les informations requises d'une chaîne. Cet article explique comment utiliser les expressions régulières PHP pour extraire plusieurs sous-chaînes d'une chaîne.

  1. Fonction preg_match_all
    PHP fournit la fonction preg_match_all, qui peut être utilisée pour trouver toutes les sous-chaînes correspondant à un certain modèle dans une chaîne. La syntaxe de cette fonction est la suivante :
preg_match_all($pattern, $string, &$matches, $flags = PREG_PATTERN_ORDER, $offset = 0);

où $pattern représente l'expression régulière qui doit être mise en correspondance, $string représente la chaîne qui doit être mise en correspondance et $matches est un tableau utilisé pour stocker tous les résultats correspondants. $flags représente l'indicateur de correspondance, qui peut être PREG_PATTERN_ORDER ou PREG_SET_ORDER. $offset représente la position de départ de la correspondance, qui est par défaut 0.

Ce qui suit est un exemple spécifique. Supposons que nous devions faire correspondre tous les nombres d'une chaîne :

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

Le résultat de sortie est :

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

Comme le montrent les résultats, dans le tableau $matches renvoyé par la fonction preg_match_all, le premier Chaque élément représente le résultat correspondant à l'ensemble de l'expression régulière, et les éléments suivants représentent le résultat correspondant à chaque parenthèse dans l'expression régulière.

  1. Regroupement de supports
    Dans les expressions régulières, nous pouvons utiliser des crochets pour regrouper le contenu qui doit correspondre. Par exemple, nous pouvons utiliser des parenthèses pour séparer les chiffres et les lettres qui doivent correspondre, puis les faire correspondre respectivement :
$str = 'abc123def456ghi789jkl';
preg_match_all('/([a-z]+)(d+)/', $str, $matches);
print_r($matches);

Le résultat de sortie est :

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
        )

)

Comme le montre le résultat, le premier élément du Le tableau $matches est l'intégralité de l'expression régulière. Le résultat correspondant, les éléments suivants correspondent au résultat correspondant de chaque parenthèse dans l'expression régulière. De cette façon, nous pouvons facilement extraire plusieurs sous-chaînes de la chaîne.

  1. Mode non gourmand
    Par défaut, les expressions régulières utiliseront le mode gourmand pour la correspondance, c'est-à-dire faire correspondre autant de caractères que possible. Par exemple, pour la chaîne "aabbcc", nous espérons faire correspondre "aa" et "bb". Nous pouvons utiliser l'expression régulière "/a.+b/", mais nous constaterons que le résultat correspondant est "aabb", pas ce à quoi nous nous attendions. "aa" et "bb".

Pour résoudre ce problème, nous pouvons utiliser le mode non gourmand, qui correspond au moins de caractères possible. Dans les expressions régulières, utilisez des points d'interrogation pour indiquer des modèles non gourmands. Par exemple, pour faire correspondre « aa » et « bb » dans l’exemple ci-dessus, vous utiliserez l’expression régulière « /a.+?b/ ».

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

Le résultat de sortie est :

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

Comme le montrent les résultats, le mode non gourmand peut nous aider à faire correspondre avec précision les résultats dont nous avons besoin.

Résumé
Cet article explique comment extraire plusieurs sous-chaînes d'une chaîne à l'aide d'expressions régulières PHP. Grâce à la fonction preg_match_all, au regroupement par parenthèses et au mode non gourmand, nous pouvons gérer de manière flexible diverses situations et extraire les informations requises. Dans le développement réel, l'utilisation d'expressions régulières peut considérablement améliorer l'efficacité et le taux de réussite de la correspondance de chaînes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn