Lors du développement de sites Web ou d'applications, nous devons souvent traiter du texte. S'il ne s'agit que d'opérations de chaîne simples, telles que la recherche et le remplacement, l'interception, etc., vous pourrez peut-être également utiliser certaines fonctions intégrées pour le compléter. Mais si vous devez effectuer une correspondance de modèles ou une extraction de données plus complexe, vous devez utiliser des expressions régulières.
Les expressions régulières sont un outil puissant pour traiter les données textuelles. Cela nous aide à faire correspondre et à traiter les chaînes via certains symboles et règles spécifiques. En PHP, les expressions régulières sont intégrées et la correspondance peut être effectuée à l'aide de la bibliothèque PCRE (Perl Compatible Regular Expressions).
Dans cet article, nous présenterons la syntaxe de base et l'utilisation des expressions régulières PHP pour aider les débutants à démarrer rapidement et à maîtriser cet outil puissant.
Les expressions régulières se composent de caractères et de règles spécifiques qui décrivent le modèle à faire correspondre. En PHP, les expressions régulières doivent être entourées de barres obliques (/). Par exemple :
$pattern = "/hello world/i";
Cette expression régulière est utilisée pour faire correspondre "hello world" dans une chaîne et ignore la casse.
Parmi eux, "/" représente le début et la fin de l'expression régulière, et le milieu est le modèle à faire correspondre. Dans cet exemple, nous avons utilisé le modificateur « i » pour ignorer la casse. Les modificateurs se trouvent en dehors de la barre oblique et sont utilisés pour modifier le comportement de correspondance de l'expression régulière. Les modificateurs courants sont :
Modificateur | Description |
---|---|
i | Ignorer la casse |
m | Traiter les chaînes comme plusieurs lignes |
s | will Dot (.) correspond à tous caractères, y compris les nouvelles lignes |
x | Ignorer les espaces et les commentaires dans les expressions régulières |
Dans les expressions régulières, nous pouvons utiliser des jeux de caractères pour faire correspondre un ensemble spécifique de caractères. Les jeux de caractères doivent être placés entre crochets ([]). Par exemple :
$pattern = "/[aeiou]/i";
Cette expression régulière est utilisée pour faire correspondre n'importe quelle voyelle de la chaîne, en ignorant la casse.
Entre crochets, nous listons les caractères à correspondre, séparés par des virgules (,). Un tiret (-) peut être utilisé pour indiquer une plage. Par exemple :
$pattern = "/[a-z]/i";
Cette expression régulière est utilisée pour faire correspondre n'importe quelle lettre minuscule, en ignorant les lettres majuscules et minuscules.
Certains métacaractères spéciaux peuvent également être utilisés entre crochets pour représenter un ensemble spécifique de caractères. Par exemple :
métacaractère | description |
---|---|
d | correspond à n'importe quel nombre |
D | correspond à n'importe quel non-numéro |
w | Faites correspondre n'importe quelle lettre, chiffre ou trait de soulignement |
W | correspond à n'importe quel caractère autre qu'une lettre, un chiffre ou un trait de soulignement |
s | correspond à n'importe quel caractère d'espacement (espace, tabulation, nouvelle ligne, etc.) |
S | correspond à n'importe quel A non-espace caractère |
Dans les expressions régulières, nous pouvons utiliser des quantificateurs pour indiquer le nombre de correspondances pour un élément. Les quantificateurs courants sont :
Quantificateur | Description |
---|
Par exemple :
$pattern = "/a+/i";
Cette expression régulière est utilisée pour faire correspondre une ou plusieurs dans une chaîne La lettre "A", en ignorant la casse.
$pattern = "/d{3,}/";
Cette expression régulière est utilisée pour faire correspondre des chaînes comportant au moins 3 chiffres.
Dans les expressions régulières, la correspondance de limites est utilisée pour limiter la portée de la correspondance. Les correspondances de limites courantes sont :
Symbole de correspondance | Description |
---|---|
^ | Correspond au début de la chaîne |
$ | Correspond à la fin de la chaîne |
match Les limites des mots | |
B | correspondent aux positions |
例如:
$pattern = "/^hello/i";
这个正则表达式用于匹配以“hello”开头的字符串,忽略大小写。
$pattern = "/world$/i";
这个正则表达式用于匹配以“world”结尾的字符串,忽略大小写。
$pattern = "/hello/i";
这个正则表达式用于匹配单词“hello”,忽略大小写。
在正则表达式中,我们可以使用捕获分组来提取匹配的内容。捕获分组需要使用圆括号(())将要捕获的内容包裹起来。例如:
$pattern = "/(d{3})-(d{4})/"; $string = "my phone number is 123-4567"; if(preg_match($pattern, $string, $matches)){ echo $matches[0]; // 123-4567 echo $matches[1]; // 123 echo $matches[2]; // 4567 }
这个正则表达式用于匹配“123-4567”这种形式的电话号码,并且将前三个数字和后四个数字分别保存到$matches数组中。
在正则表达式中,默认情况下会进行贪婪匹配。也就是说,它会尽可能多地匹配字符。例如:
$pattern = "/.*hello/"; $string = "my name is hello, nice to meet you"; if(preg_match($pattern, $string, $matches)){ echo $matches[0]; // my name is hello }
这个正则表达式用于匹配字符串中的“hello”之前的所有字符。
如果我们想进行非贪婪匹配,也就是尽可能少地匹配字符,可以在量词后面添加一个问号(?)来实现。例如:
$pattern = "/.*?hello/"; $string = "my name is hello, nice to meet you"; if(preg_match($pattern, $string, $matches)){ echo $matches[0]; // my name is }
这个正则表达式也用于匹配字符串中的“hello”之前的所有字符,但是它只匹配到了“my name is”。
除了preg_match()函数之外,PHP中还提供了其他一些正则表达式相关的函数,例如:
函数 | 描述 |
---|---|
preg_match_all() | 用于匹配所有符合正则表达式的结果 |
preg_replace() | 用于替换符合正则表达式的字符串 |
preg_split() | 用于按照正则表达式将字符串分割成数组 |
例如:
$pattern = "/d+/"; $string = "I have 123 apples and 456 bananas"; $result = preg_match_all($pattern, $string, $matches); print_r($matches); $result = preg_replace($pattern, "***", $string); echo $result; $result = preg_split($pattern, $string); print_r($result);
这段代码分别演示了匹配所有数字、替换所有数字、以数字为分隔符将字符串分割成数组的操作。
总结
本文介绍了PHP正则表达式的基本语法和用法,包括字符集、量词、边界匹配、捕获分组、贪婪匹配和非贪婪匹配等内容。正则表达式是一种非常强大的工具,掌握它可以让我们在处理文本时事半功倍。希望本文能够帮助读者快速入门并掌握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!