PHP中的正则表达式及PCRE函数_PHP教程
PHP中的正则表达式及PCRE函数
PCRE
PHP有两种使用不同的方式来使用正则表达式:PCRE(Perl兼容表示法,preg_*)函数 和 POSIX(POSIX 扩展表示法,ereg_*) 函数。幸运的是,POSIX 家族函数从 PHP 5.3.0 开始就被弃用了。
正则表达式
界定符
经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~)。下面的例子都是使用合法分隔符的模式
<code>/foo bar/ #^[^0-9]$# +php+ %[a-zA-Z0-9_-]% {this is a pattern} </code>
可以在结束分隔符后面增加模式修饰符
元字符
一些字符被赋予 特殊的涵义,使其不再单纯的代表自己,模式中的这种有特殊涵义的编码字符 称为 元字符
。
元字符 | 描述 |
---|---|
一般用于转义字符 | |
^ | 断言目标的开始位置(或在多行模式下是行首) |
$ | 断言目标的结束位置(或在多行模式下是行尾) |
. | 匹配除换行符外的任何字符(默认) |
[ | 开始字符类定义 |
] | 结束字符类定义 |
| | 开始一个可选分支 |
( | 子组的开始标记 |
) | 子组的结束标记 |
? | 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词) |
* | 量词,0 次或多次匹配 |
+ | 量词,1 次或多次匹配 |
{ | 自定义量词开始标记 |
} | 自定义量词结束标记 |
模式中方括号内的部分称为“字符类”。 在一个字符类中仅有以下可用元字符
元字符 | 描述 |
---|---|
转义字符 | |
^ | 仅在作为第一个字符(方括号内)时,表明字符类取反 |
- | 标记字符范围 |
字符类
方括号中的内容就是字符类
有一些预定义字符类
字符类 | 描述 |
---|---|
d | 任意十进制数字 |
D | 任意非十进制数字 |
h | 任意水平空白字符(since PHP 5.2.4) |
H | 任意非水平空白字符(since PHP 5.2.4) |
s | 任意空白字符 |
S | 任意非空白字符 |
任意垂直空白字符(since PHP 5.2.4) | |
V | 任意非垂直空白字符(since PHP 5.2.4) |
w | 任意单词字符 |
W | 任意非单词字符 |
原子
可见原子
如abc
不可见原子
如
量词
量词 | |
---|---|
* | 等价于 {0,} |
+ | 等价于 {1,} |
? | 等价于 {0,1} |
断言
简单的断言代码有、B、 A、 Z、z、 ^、$
前瞻断言
从当前位置向前测试
(?=)
(?!)
w+(?=;)
匹配一个单词紧跟着一个分号但是匹配结果不会包含分号
后瞻断言
从当前位置向后测试
(?<=)
(?<!--)</code-->
<code>(?<!--foo)bar</code-->用于查找任何前面不是 ”foo” 的 ”bar”
<code>模式修饰符
<code>模式修饰符 |
|
---|---|
<code>U |
<code>这个修饰符逆转了量词的”贪婪”模式,使量词默认为非贪婪的 |
<code>i |
<code>大小写不敏感匹配 |
<code>x |
<code>忽略空白 |
<code>s |
<code>点号元字符匹配所有字符,包含换行符。如果没有这个修饰符,点号不匹配换行符 |
<code>… |
<code>PCRE 函数
<code><code><code>preg_filter — 执行一个正则表达式搜索和替换 preg_grep — 返回匹配模式的数组条目 preg_last_error — 返回最后一个PCRE正则执行产生的错误代码 preg_match_all — 执行一个全局正则表达式匹配 preg_match — 执行一个正则表达式匹配 preg_quote — 转义正则表达式字符 preg_replace_callback_array — Perform a regular expression search and replace using callbacks preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换 preg_replace — 执行一个正则表达式的搜索和替换 preg_split — 通过一个正则表达式分隔字符串 </code></code></code>

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

Le langage Go propose deux technologies de création de fonctions dynamiques : la fermeture et la réflexion. les fermetures permettent d'accéder aux variables dans la portée de la fermeture, et la réflexion peut créer de nouvelles fonctions à l'aide de la fonction FuncOf. Ces technologies sont utiles pour personnaliser les routeurs HTTP, mettre en œuvre des systèmes hautement personnalisables et créer des composants enfichables.

Dans la dénomination des fonctions C++, il est crucial de prendre en compte l’ordre des paramètres pour améliorer la lisibilité, réduire les erreurs et faciliter la refactorisation. Les conventions courantes d'ordre des paramètres incluent : action-objet, objet-action, signification sémantique et conformité de la bibliothèque standard. L'ordre optimal dépend de l'objectif de la fonction, des types de paramètres, de la confusion potentielle et des conventions du langage.

Les expressions régulières Golang utilisent le caractère barre verticale | pour faire correspondre plusieurs mots ou chaînes, séparant chaque option comme une expression OU logique. Par exemple : correspond à "fox" ou "dog" : fox|dog correspond à "quick", "brown" ou "lazy" : (quick|brown|lazy) correspond à "Go", "Python" ou "Java" : Go| Python |Java fait correspondre des mots ou des codes postaux à 4 chiffres : ([a-zA

La clé pour écrire des fonctions Java efficaces et maintenables est la suivante : restez simple. Utilisez un nom significatif. Gérer des situations particulières. Utilisez une visibilité appropriée.

1. La fonction SOMME permet de sommer les nombres d'une colonne ou d'un groupe de cellules, par exemple : =SOMME(A1:J10). 2. La fonction MOYENNE permet de calculer la moyenne des nombres dans une colonne ou un groupe de cellules, par exemple : =AVERAGE(A1:A10). 3. Fonction COUNT, utilisée pour compter le nombre de nombres ou de texte dans une colonne ou un groupe de cellules, par exemple : =COUNT(A1:A10) 4. Fonction IF, utilisée pour effectuer des jugements logiques basés sur des conditions spécifiées et renvoyer le résultat correspondant.

Les avantages des paramètres par défaut dans les fonctions C++ incluent la simplification des appels, l’amélioration de la lisibilité et l’évitement des erreurs. Les inconvénients sont une flexibilité limitée et des restrictions de dénomination. Les avantages des paramètres variadiques incluent une flexibilité illimitée et une liaison dynamique. Les inconvénients incluent une plus grande complexité, des conversions de types implicites et des difficultés de débogage.

Les avantages des fonctions renvoyant des types référence en C++ incluent : Améliorations des performances : le passage par référence évite la copie d'objets, économisant ainsi de la mémoire et du temps. Modification directe : L'appelant peut modifier directement l'objet de référence renvoyé sans le réaffecter. Simplicité du code : le passage par référence simplifie le code et ne nécessite aucune opération d'affectation supplémentaire.

Les paramètres de référence dans les fonctions C++ (essentiellement les alias de variable, la modification de la référence modifie la variable d'origine) et les paramètres de pointeur (stockage de l'adresse mémoire de la variable d'origine, modification de la variable en déréférençant le pointeur) ont des utilisations différentes lors du passage et de la modification de variables. Les paramètres de référence sont souvent utilisés pour modifier les variables d'origine (en particulier les grandes structures) afin d'éviter une surcharge de copie lorsqu'elles sont transmises aux constructeurs ou aux opérateurs d'affectation. Les paramètres de pointeur sont utilisés pour pointer de manière flexible vers des emplacements de mémoire, implémenter des structures de données dynamiques ou transmettre des pointeurs nuls pour représenter des paramètres facultatifs.
