zoukankan      html  css  js  c++  java
  • 正则表达式

    第7章正则表达式
     1.  什么是正则表达式
    正则表达式就是一种描述字符串结构的语法规则
     2. 为什么需要正则表达式?
    因为需要对用户提交的信息进行验证,如果不验证的话,有可能用户提交的就是垃圾信息
     3. PHP里面的正则表达式函数库
     在PHP里面支持2套正则表达式函数库,一套是POSIX,另外一套是PCRE。比起POSIX,现在更多的是使用PCRE这一套正则表达式函数。原因有两个:PCRE函数库的兼容性更好,并且效率高。
     我们的正则表达式如果不配合正则表达式函数的话,它就只是一个普通的字符串。所以正则表达式一定要配合正则表达式函数来使用
     4. 正则表达式语法
     任何一个正则表达式的组成无外乎由4个部分组成 ① 定界符 ② 原子 ③ 元字符 ④ 模式修正符
      定界符
       我们所写的正则表达式都需要放在定界符里面。一般常见的定界符为两个斜杠//
    但是,我们的定界符不仅仅只有//  任何除了数字,字母,反斜杠 以外的字符都可以成为正则表达式的定界符
      原子
    原子是正则表达式里面最基本的组成单位。换句话说,一个正则表达式里面,可以没有元字符,可以没有模式修饰符,但是不能没有原子。
    原子大致可以分为5大类
       1)普通字符作为原子
    所谓普通字符,就是大小写字母,数字等字符
    例如:
    “/5/”   用于匹配字符串中是否有5这个字符出现
    “/php/”   用于匹配字符串中是否有php这个字符串出现
       2)特殊字符作为原子
    在正则表达式里面,有一些字符是有特殊含义,例如* +?.
    如果我们就只想匹配普通的*+?. 的话,必须转义。转义字符是一个反斜杠
       3)非打印字符作为原子
    所谓非打印字符,就是字符串中的控制符号,例如:空格,回车,制表符(Tab)
       4)使用通用型字符作为原子
    所谓通用型字符,就是指一个原子可以匹配多个字符。
    d:匹配任意一个十进制数字0-9
    D:匹配任意一个除了十进制以外的字符
    s:匹配任意一个非打印字符
    S:除了非打印字符以外的字符可以被匹配上
    w:匹配字母数字和下划线
    W:匹配除了数字,字母下划线以外字符
       5)自定义原子表作为原子
    自定义原子表通过一对[ ]
    可以在[]里面加上一个^ 代表不能匹配方括弧里面的字符
    还可以在方括弧里面使用”   -  “ ,代表的是一个范围
      元字符
    所谓元字符,就是用于构建正则表达式的具有特殊含义的字符。例如:+*?
       1)限定符
    所谓限定符,就是限定一个原子必须出现多少次:* + ? {n} {n,} {n,m}
    *:代表一个原子出现0次或者多次
    +:代表一个原子出现1次或者多次
    ?:代表一个原子要么出现1次,要么出现0次
    {n}:前面的原子出现几次
    {n,}:前面的原子至少出现n次
    {n,m}:前面的原子至少出现n次,最多m次

    *:{0,}
    +:{1,}
    ?:{0,1}
       2)边界限定符
    ^:字符串是否以某一个字符串开头
    $:字符串是否以某一个字符串结尾
    和B
     :是边界
    B :  不是边界
       3)点.
    可以匹配任何一个除了换行符以外的字符
       4)模式选择符 |
       5) 模式单元
        所谓模式单元,就是可以使用()将多个原子组合成一个更大的原子
        One:将小原子组合成了一个大原子
      Two:改变元字符的优先级
        Three:开启了独立的模式,会将小括号里面的内容存入到缓冲区里面
      被存入到缓冲区里面的内容可以通过1 2 3来进行反向引用
        缓冲区是可以被跳过的,通过一个?:来跳过缓冲区
       6)元字符的优先级
      ④ 模式修正符
    所谓模式修正符,是对正则表达式功能的一种扩充,增强了正则表达式的处理能力,模式修正符一般是写在定界符外面
       i:忽略大小写
    M:可以匹配多行,换句话说,可以多行查找
    S:主要功能是用来增强点. 的功能
    X:可以忽略空格
     正则表达式函数
      Preg_match():查看一个字符串是否和一个正则表达式匹配,匹配就返回TRUE,否则返回FALSE

    Preg_match_all():第一次匹配成功之后也不会像Preg_match()一样停止搜索,而是会继续往后面搜索符合要求的字符串

    Preg_grep():接受两个参数,一个是正则表达式,一个是数组,将符合条件的元素提出来返回一个新的数组,返回的新数组里面的元素下标不变

    Preg_repalce(正则,替换的字符串,原来的字符串)

    除了使用正则的方式,使用字符串替换函数也是可以实现字符串替换的
    Str_replace(“要替换的字符串”,“新的字符串”,要操作的字符串,[替换的次数])

    使用正则和字符串替换函数都可以实现字符串的替换,但是正则的功能比字符串替换函数要强大一些,但是功能强大的背后,是效率会降低
    如果可以是字符串替换函数搞定的事儿,就不要去用正则
     字符串分割
      Preg_split()
     字符串处理
      Explode(分隔符,字符串)
      Implode():将一个数组组合成一个字符串
    Implode(连接符号,数组)

  • 相关阅读:
    5860. 从双倍数组中还原原数组
    5847. 找到所有的农场组
    5846. 找到数组的中间位置
    442. 数组中重复的数据
    1987. 不同的好子序列数目
    1986. 完成任务的最少工作时间段
    1985. 找出数组中的第 K 大整数
    1984. 学生分数的最小差值
    学习内容整合
    spring-DI和spring-mybatis整合
  • 原文地址:https://www.cnblogs.com/dlp-520/p/7400203.html
Copyright © 2011-2022 走看看