笔记之 --- 正则表达式

后端开发
2018年06月26日
729

正则表达式

正则表达式:就是描述字符串排列模式的一种自定义语法规则
如果可以使用字符串处理函数完成的任务,就不要使用正则;有一些复杂的操作,只能正则完成。

正则表达式也称为一种模式表达式

正则表达式就是通过构建具有特定规则的模式,与输入的字符信息比较,再进行分割、匹配、查找、替换等工作。

js
// 这是一个正则表达式 $regex = '/\<img\s*src=\".*?\/\>/'
  • 正则表达式也是一个字符串
  • 由具有特殊意义的字符组成的字符串
  • 具有一点编写规则,也是一种模式
  • 看作一种编程语言(是由一些特殊字符,按规则编写出一个字符串,形成一种模式——正则表达式)

注意:如果正则表达式不和函数一起使用,则它就是一个字符串,将正则表达式放到某个函数中使用,才能发挥出正则表达式的作用.

语法

/\<img\s*src=\".*?\/\>/iu

定界符号

  • 字母、数字和反斜线\以外的任何字符都可以为定界符号;

  • ||//{}!! ;

  • 如果没有特殊需要,我们都使用正斜线//作为正则表达式的定界符号。

原子

注意:原子是正则表达式的最基本组成单位,而且必须至少要包含一个原子。

只要一个正则表达式可以单独使用的字符,就是原子

  • 所有打印(可以在屏幕上输出的字符串)和非打印字符(看不到的,如回车、空格);

  • .*+?(<> 如果想使用有意义的字条作为原子则需要用反斜线\来转义;

  • 在正则表达式中可以直接使用一些代表范围的原子:

    \d:表式任意一个十进制的数字
    \D:表示任意一个除了数字之外的字符
    \s:表示任意一个空白字符, 空格.\n\r\t\f
    \S:表示任意一个非空白字符
    \w : 表示任意一个字 a-z和A-Z和0-9和_
    \W : 表示任意一个非字 除了\w表示的

  • 自己定义一个原子表[],可以匹配方括号中的任何一个原子

    [a-z5-8]
    [^] 表示取反,就是除了原子表中的原子,都可以表示

元字符

元字符是一种特殊的字符,是用来修饰原子用的,不可以单独出现

  • *:表示其前的原子可以出现0次、1次或多次

  • +:表示其前的原子可以出现1次或多次,但最少要有一个

  • ?:表示其前面的原子可以出现0次或1次,要么有,要么没有

  • {}:用于自己前面原子出现的次数{m}表示最少出现m次;{m,n}表示最少m次,最多n次。

  • .:默认情况下,表示除换行符以外的任意一个字符

  • ^:直接在一个正则表达式的第一个字符出现,则表示必须以这个正则表达式开始

  • $:直接在一个正则表达式的最后一个字符出现,则表示必须以这个正则表达结尾

  • |:表示或的关系,它的优先级是最低的,最后才考虑

  • \b:表示一个边界

  • \B:表示一个非边界

  • ()

    1、作为大原子使用
    2、改变优先级,加上括号可以提高优先级
    3、作为子模式使用,正则表达式不光对一个字符串匹配一次,全部匹配作为一个大模式,放到数组里的第一个元素中,每个()是一个子模式按顺序放到数组中
    4、可以取消子模式,就将()作为大原子或改变优先级使用,比如:(?:)
    5、反向引用,可以在模式中直接将子模式取出来,再作为正则表达式模式的一部分

模式修正符号

  • 就是几个字母;

  • 可以一次使用一个,每一个具有一定的意义,也可以连续使用多个;

  • 是对整个正则表达式调优使用的,也可以说是对正则表达式功能的拓展

    i:表示在和模式进行匹配时不区分大小写。
    m:默认情况,将字符串视为一行,加上m后则视为多行。
    s:如果没有使用这个模式修改符号时,元字符中的".“默认不能表示换行符号,将字符串视为单行。
    x:表示模式中空白忽略不计。
    e:正则表达式必须使用在preg_replace替换字符串中的函数中时才可以使用。
    U:正则表达式的特点:就是比较"贪婪”,用U可以取消这种贪婪模式。


函数

具体使用方法见手册!!!

  • preg_filter

    执行一个正则表达式搜索和替换

  • preg_grep

    返回匹配模式的数组条目

  • preg_last_error

    返回最后一个PCRE正则执行产生的错误代码

  • preg_match

    执行一个正则表达式匹配

  • preg_match_all

    执行一个全局正则表达式匹配

  • preg_quote

    转义正则表达式字符

  • preg_replace

    执行一个正则表达式的搜索和替换

  • preg_replace_callback

    执行一个正则表达式搜索并且使用一个回调进行替换

  • preg_split

    通过一个正则表达式分隔字符串