Code前端首页关于Code前端联系我们

学习PHP正则表达式训练

terry 2年前 (2023-09-30) 阅读数 44 #PHP
文章标签 PHP

1.正则表达式基本语法

正则表达式是用于匹配字符串的方法。在PHP中,正则表达式通常用于搜索文本中的特定模式,并且可以执行替换和分割匹配字符串等操作。接下来我们来学习一下正则表达式的基本语法:

    $pattern = '/正则表达式模式/';
    preg_match($pattern, $string, $matches);     // preg_match()函数:返回第一个匹配到的字符串
    preg_match_all($pattern, $string, $matches); // preg_match_all()函数:返回所有匹配到的字符串
    preg_replace($pattern, $replacement, $string); // preg_replace()函数:替换匹配到的字符串

在上面的代码中,$pattern变量存储正则表达式模式。 '/' 是模式的分隔符,它将用作正则表达式的一部分。 $string是要匹配的字符串,$matches用于存储匹配结果。 preg_match()函数返回第一个匹配的字符串,preg_match_all()函数返回所有匹配的字符串,preg_replace()函数用$replacement替换匹配的字符串。

2。匹配字符

字符

是正则表达式中最简单的模式。与该字符匹配的字符的正则表达式。

    $pattern = '/a/';
    preg_match($pattern, 'abc', $matches);     // 匹配成功,$matches[0] = 'a'
    preg_match_all($pattern, 'abcd', $matches); // 匹配成功,$matches[0] = 'a'
    preg_match($pattern, 'bcd', $matches);     // 匹配失败

在上面的代码中,我们使用'/a/'来匹配字符串'abc'和'abcd',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。

3。匹配字符集

字符集

用于匹配一组字符中的一个字符。例如,[abc] 匹配单个字符 a、b 或 c。

    $pattern = '/[abc]/';
    preg_match($pattern, 'bcd', $matches);     // 匹配成功,$matches[0] = 'b'
    preg_match_all($pattern, 'abcdefg', $matches); // 匹配成功,$matches[0] = 'a', $matches[1] = 'b', $matches[2] = 'c'
    preg_match($pattern, 'def', $matches);     // 匹配失败

在上面的代码中,我们使用'/[abc]/'来匹配字符串'bcd'和'abcdefg',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。

4。对应范围

通过将字符放在一个范围内,我们可以匹配该范围内的任何字符。例如,[a-z] 匹配任何小写字母。

    $pattern = '/[a-z]/';
    preg_match($pattern, 'abc', $matches);     // 匹配成功,$matches[0] = 'a'
    preg_match_all($pattern, 'abc123ABC', $matches); // 匹配成功,$matches[0] = 'a', $matches[1] = 'b', $matches[2] = 'c'
    preg_match($pattern, 'DEF', $matches);     // 匹配失败

在上面的代码中,我们使用'/[a-z]/'来匹配字符串'abc'和'abc123ABC',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。

5。匹配任意字符

通常我们需要匹配任意字符,可以用点(.)来表示。点匹配单个字符,但不匹配换行符。

    $pattern = '/.at/';
    preg_match($pattern, 'cat', $matches);     // 匹配成功,$matches[0] = 'cat'
    preg_match_all($pattern, 'bat hat sat', $matches); // 匹配成功,$matches[0] = 'bat', $matches[1] = 'hat', $matches[2] = 'sat'
    preg_match($pattern, 'lat' . PHP_EOL . 'mat', $matches); // 匹配失败

在上面的代码中,我们使用'/.[a-z]at/'来匹配字符串'cat'和'bat hat sat',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。

6。匹配多个字符

我们可以使用大括号 ({}) 来匹配模式中的多个字符。例如,{3,5}可以匹配3到5个字符。

    $pattern = '/[a-z]{3,5}/';
    preg_match($pattern, 'hello', $matches);     // 匹配成功,$matches[0] = 'hello'
    preg_match_all($pattern, 'hello world', $matches); // 匹配成功,$matches[0] = 'hello', $matches[1] = 'world'
    preg_match($pattern, 'a', $matches);     // 匹配失败

上面的代码中,我们使用'/[a-z]{3,5}/'来匹配字符串'hello'和'hello world',匹配结果存储在$matches数组中。如果匹配失败则返回 false。

7。匹配任意字符

我们可以使用星号(*)来匹配任何数字。例如,a*可以匹配数字a、aa、aaa等。

    $pattern = '/a*/';
    preg_match($pattern, 'abc', $matches);     // 匹配成功,$matches[0] = 'a'
    preg_match_all($pattern, 'aaabc', $matches); // 匹配成功,$matches[0] = 'aaa', $matches[1] = 'b', $matches[2] = 'c'
    preg_match($pattern, 'bcd', $matches);     // 匹配成功,$matches[0] = ''

在上面的代码中,我们使用'/a*/'来匹配字符串'abc'和'aaabc',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。

8。匹配至少一个字符

我们可以使用加号 (+) 来显示至少匹配 1 的数字。例如,a+可以匹配一个或多个a,例如a、aa、aaa等。

    $pattern = '/a+/';
    preg_match($pattern, 'abc', $matches);     // 匹配成功,$matches[0] = 'a'
    preg_match_all($pattern, 'aaabc', $matches); // 匹配成功,$matches[0] = 'aaa', $matches[1] = 'b', $matches[2] = 'c'
    preg_match($pattern, 'bcd', $matches);     // 匹配失败

在上面的代码中,我们使用'/a+/'来匹配字符串'abc'和'aaabc',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。

9。匹配可选字符

使用括号 (()) 标记可选部分。例如,(a|b) 匹配字符一或b。

    $pattern = '/(a|b)/';
    preg_match($pattern, 'abc', $matches);     // 匹配成功,$matches[0] = 'a'
    preg_match_all($pattern, 'abcde', $matches); // 匹配成功,$matches[0] = 'a', $matches[1] = 'b'
    preg_match($pattern, 'cde', $matches);     // 匹配失败

在上面的代码中,我们使用'/(a|b)/'来匹配字符串'abc'和'abcde',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。

10。结论

正则表达式是功能强大的文本匹配工具,可用于搜索、替换、提取等操作。 PHP 通过 preg_match、preg_match_all 和 preg_replace 等函数提供正则表达式支持。因此,掌握正则表达式对于PHP开发人员来说非常重要。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门