六、正则表达式

六、正则表达式

  1. 正则表达式语法规则

    • 由普通字符和元字符组成的特殊字符串
      • 普通字符(如:a ~ z、A ~ Z、0 ~ 9、'、"
      • 元字符(如:+、*、?、\d 等)
      • 详细元字符:https://www.runoob.com/regexp/regexp-metachar.html
    • 定界符:一般用正斜线 / 作为定界符,除了字母、数字、反斜线之外的字符都可以作为定界符
    • preg_match_all:执行一个全局正则表达式匹配
      • preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] ) : int
      • 搜索subject中所有匹配pattern给定正则表达式 的匹配结果并且将它们以flag指定顺序输出到matches中.
    • .*配合默认情况下是贪婪匹配(尽可能的多去匹配字符),在.*后面加一个 ? 可以解决贪婪匹配的问题。
  2. 模式修正符

    • 模式修正符是在正则表达式的定界符之后使用的,可以调整正则表达式的解释,拓展正则表达式在匹配、替换等操作时的某些功能,增强正则表达式的处理能力。

    • i 表示在和模式进行匹配进不区分大小写

    • m 将模式视为多行,使用^$表示任何一行都可以以正则表达式开始或结束。使用条件是,目标字符串中必须出现换行符\n,正则表达式中要出现^$这两个字符。

      <?php 
      $pattern = "/^test$/m";
      $str = "test\ntest";
      preg_match_all($pattern, $str, $arr);
      var_dump($arr);
      ?>
      

    在这里插入图片描述

    • s 如果没有使用这个模式修正符号,元字符中的"."默认不能表示换行符号,将字符串视为单行
    • x 表示模式中的空白忽略不计
    • e 正则表达式必须使用在preg_replace替换字符串的函数中时才可以使用(讲这个函数时再说)
    • A 以模式字符串开头,相当于元字符^
    • Z 以模式字符串结尾,相当于元字符$
    • U 正则表达式的特点:就是比较“贪婪”,使用该模式修正符可以取消贪婪模式
  3. 与正则表达式配合的函数

    • preg_match():执行匹配正则表达式

      • 搜索subjectpattern给定的正则表达式的一个匹配,返回值为 0 或 1 , preg_match() 在第一次匹配之后将会停止搜索。

      • 参数说明:

        ​ 第一个参数:正则表达式
        ​ 第二个参数:目标字符串
        ​ 第三个参数(可选):放一个变量,执行完成之后,里面会有匹配到的部分以及一些数据。
        ​ 第四个参数(可选):可以传PREG_OFFSET_CAPTURE进入(那么第三个参数那个变量里面的数据就会有匹配到的部分的偏移值),默认传值为0
        ​ 第五个参数(可选):可以传一个值,来表示从目标字符串的哪个位置开始搜索(单位是字节)

    • preg_match_all():执行一个全局正则表达式匹配

    • preg_replace():执行一个正则表达式的搜索和替换

      • preg_replace (mixed $pattern , mixed$replacement ,mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed

      • 搜索subject中匹配pattern的部分, 以replacement进行替换。

      • 参数说明

        ​ 第一个参数:正则表达式
        ​ 第二个参数:要替换成的字符串
        ​ 第三个参数:目标字符串
        ​ 第四个参数(可选):默认是 -1,就是替换所有符合特征的部分
        ​ 第五个参数(可选):可以放一个变量

      • 注意:可以传数组

发布了10 篇原创文章 · 获赞 0 · 访问量 119

猜你喜欢

转载自blog.csdn.net/ck_15270706753/article/details/105014955