Maison développement back-end tutoriel php Une brève discussion sur les expressions régulières en PHP

Une brève discussion sur les expressions régulières en PHP

Jan 05, 2019 am 09:54 AM
php 正则表达式

Cet article vous présentera les expressions régulières PHP.Il a une certaine valeur de référence.Les amis dans le besoin peuvent s'y référer.J'espère qu'il vous sera utile.

Mind Map

Cliquez sur l'image ci-dessous pour voir le contenu spécifique !

Introduction

Expressions régulières, tout le monde devrait être en développement C'est souvent utilisé. De nos jours, de nombreux langages de développement ont des applications d'expressions régulières, telles que javascript, java, .net, php, etc. Aujourd'hui, je vais partager avec vous ma compréhension des expressions régulières. . Conseil!

Termes que vous devez connaître - Que savez-vous des termes suivants ?

Δ Délimiteur

Δ Champ de caractères

Δ Modificateur

Δ Qualificateur

Δ Caret

Δ Wildcard (pré-vérification avant, pré-vérification inverse)

Δ Référence arrière

Δ Correspondance paresseuse

Δ Commentaires

Δ Largeur de caractère nulle

Positionnement

Quand utilisons-nous Qu'en est-il du standard expressions ? Il ne suffit pas d'utiliser des expressions régulières pour toutes les opérations sur les caractères. PHP utilise des expressions régulières dans certains aspects, ce qui affecte en réalité l'efficacité. Lorsque nous rencontrons l'analyse de données textuelles complexes, l'utilisation d'expressions régulières est un meilleur choix.

Avantages

Les expressions régulières peuvent améliorer l'efficacité du travail lorsqu'il s'agit d'opérations de caractères complexes, et également vous faire économiser dans une certaine mesure quantité de code.

Inconvénients

Lorsque nous utilisons des expressions régulières, des expressions régulières complexes augmenteront la complexité du code, ce qui est très frustrant Difficile comprendre. Nous devons donc parfois ajouter des commentaires dans les expressions régulières.

Mode commun

¤ Délimiteur, utilisez généralement "/" comme délimiteur pour commencer et terminer, vous pouvez également utiliser "#".

Quand devez-vous utiliser "#" ? Généralement, c'est lorsqu'il y a beaucoup de caractères "/" dans votre chaîne, car ces caractères doivent être échappés lors de l'utilisation d'expressions régulières, comme uri.

Le code utilisant le délimiteur "/" est le suivant.

$regex = '/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html$/i';
$str = 'http://www.youku.com/show_page/id_ABCDEFG.html';
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

$matches[0] dans preg_match contiendra la chaîne correspondant à l'intégralité du motif.

Le code utilisant le délimiteur "#" est le suivant A ce moment, n'échappe pas à "/" !

$regex = '#^http://([\w.]+)/([\w]+)/([\w]+)\.html$#i';
$str = 'http://www.youku.com/show_page/id_ABCDEFG.html';
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

¤ Modificateur : utilisé pour changer. Le comportement des expressions régulières.

Ce que nous voyons ('/^http://([w.]+)/([w]+)/([w]+).html/ i') Le dernier "i" est le modificateur, ce qui signifie ignorer la casse. Un autre que nous utilisons souvent est "x" qui signifie ignorer les espaces.

Code de contribution :

$regex = '/HELLO/';
$str = 'hello word';
$matches = array();

if(preg_match($regex, $str, $matches)){
    echo 'No i:Valid Successful!',"\n";
}

if(preg_match($regex.'i', $str, $matches)){
    echo 'YES i:Valid Successful!',"\n";
}
Copier après la connexion

¤ Champ de caractère : [w] La partie développée entre crochets est le champ de caractère.

¤ Qualificateur : Tel que [w]{3,5} ou [w]* ou [w]+ Les symboles après [w] représentent tous des qualificatifs. La signification spécifique est maintenant introduite.

{3,5} signifie 3 à 5 caractères. {3,} comporte plus de 3 caractères, {,5} comporte jusqu'à 5 caractères et {3} comporte trois caractères.

* signifie 0 à plus

* signifie 1 ou plus.

¤ Le curseur

^:

> placé dans un champ de caractère (tel que : [^w]) signifie la négation (c'est-à-dire ne pas inclure) - —"Sélection inversée"

    > Placé avant l'expression, cela signifie commencer par le caractère courant. (/^n/i, signifie commencer par n).

Notez que nous appelons souvent "" "caractère d'échappement". Utilisé pour échapper à certains symboles spéciaux, tels que ".", "/"

Caractères génériques (lookarounds) : Affirmer la présence ou l'absence de certains caractères dans certaines chaînes !

Il existe deux types de recherches : les recherches anticipées (recherche directe ?=) et les recherches derrière (recherche inversée ?<=).

> Format :

Recherche directe : (?=) Le (?!) correspondant signifie une signification négative

Recherche inversée : (?< =) Le correspondant ( ?

suivie des caractères

$regex = &#39;/(?<=c)d(?=e)/&#39;;  /* d 前面紧跟c, d 后面紧跟e*/
$str = &#39;abcdefgk&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

une signification négative :

$regex = &#39;/(?<!c)d(?!e)/&#39;;  /* d 前面不紧跟c, d 后面不紧跟e*/
$str = &#39;abcdefgk&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

>字符宽度:零

验证零字符代码

$regex = &#39;/HE(?=L)LO/i&#39;;
$str = &#39;HELLO&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

打印不出结果!

$regex = &#39;/HE(?=L)LLO/i&#39;;
$str = &#39;HELLO&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

能打印出结果!

说明:(?=L)意思是HE后面紧跟一个L字符。但是(?=L)本身不占字符,要与(L)区分,(L)本身占一个字符。

捕获数据

没有指明类型而进行的分组,将会被获取,供以后使用。

> 指明类型指的是通配符。所以只有圆括号起始位置没有问号的才能被捕捉。

> 在同一个表达式内的引用叫做反向引用。

> 调用格式: \编号(如\1)。

$regex = &#39;/^(Chuanshanjia)[\w\s!]+\1$/&#39;;    
$str = &#39;Chuanshanjia thank Chuanshanjia&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

> 避免捕获数据

格式:(?:pattern)

优点:将使有效反向引用数量保持在最小,代码更加、清楚。

>命名捕获组

格式:(?P<组名>) 调用方式 (?P=组名)

$regex = &#39;/(?P<author>chuanshanjia)[\s]Is[\s](?P=author)/i&#39;;
$str = &#39;author:chuanshanjia Is chuanshanjia&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

运行结果

惰性匹配(记住:会进行两部操作,请看下面的原理部分)

  格式:限定符?

原理:"?":如果前面有限定符,会使用最小的数据。如“*”会取0个,而“+”会取1个,如过是{3,5}会取3个。

先看下面的两个代码:

代码1.

<?php
$regex = &#39;/heL*/i&#39;;
$str = &#39;heLLLLLLLLLLLLLLLL&#39;;
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

结果1.

代码2

<?php
$regex = &#39;/heL*?/i&#39;;
$str = &#39;heLLLLLLLLLLLLLLLL&#39;;
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

结果2

代码3,使用“+”

<?php
$regex = &#39;/heL+?/i&#39;;
$str = &#39;heLLLLLLLLLLLLLLLL&#39;;
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

结果3

代码4,使用{3,5}

<?php
$regex = &#39;/heL{3,10}?/i&#39;;
$str = &#39;heLLLLLLLLLLLLLLLL&#39;;
if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

结果4

正则表达式的注释

格式:(?# 注释内容)

用途:主要用于复杂的注释

贡献代码:是一个用于连接MYSQL数据库的正则表达式

$regex = &#39;/
    ^host=(?<!\.)([\d.]+)(?!\.)                 (?#主机地址)
\|
    ([\w!@#$%^&*()_+\-]+)                       (?#用户名)
\|
    ([\w!@#$%^&*()_+\-]+)                       (?#密码)
(?!\|)$/ix&#39;;

$str = &#39;host=192.168.10.221|root|123456&#39;;
$matches = array();

if(preg_match($regex, $str, $matches)){
    var_dump($matches);
}

echo "\n";
Copier après la connexion

特殊字符

特殊字符解释
*0到多次
+1到多次还可以写成{1,}
?0或1次
.匹配除换行符外的所有单个的字符
\w[a-zA-Z0-9_]
\s空白字符(空格,换行符,回车符)[\t\n\r]
\d[0-9]

案例汇总

1、PHP中文匹配

<?php
$str = "PHP编程";
if (preg_match("/([0-9a-zA-Z\x{4e00}-\x{9fa5}]+)/u",$str, $matches)) {
    var_dump($matches);
    echo "\n";
}
Copier après la connexion

 以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

7 fonctions PHP que je regrette de ne pas connaître auparavant 7 fonctions PHP que je regrette de ne pas connaître auparavant Nov 13, 2024 am 09:42 AM

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Comment analysez-vous et traitez-vous HTML / XML dans PHP? Comment analysez-vous et traitez-vous HTML / XML dans PHP? Feb 07, 2025 am 11:57 AM

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Programme PHP pour compter les voyelles dans une chaîne Programme PHP pour compter les voyelles dans une chaîne Feb 07, 2025 pm 12:12 PM

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Quelles sont les méthodes PHP Magic (__construct, __ destruct, __ call, __get, __set, etc.) et fournir des cas d'utilisation? Apr 03, 2025 am 12:03 AM

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

See all articles