首页 > 编程 > PHP > 正文

PHP中的正则表达式及PCRE函数

2020-03-22 16:22:36
字体:
来源:转载
供稿:网友
  • PCRE

    PHP有两种使用不同的方式来使用html' target='_blank'>正则表达式:PCRE(Perl兼容表示法,preg_*)函数 和 POSIX(POSIX 扩展表示法,ereg_*) 函数。幸运的是,POSIX 家族函数从 PHP 5.3.0 开始就被弃用了。


    正则表达式

    界定符

    经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~)。下面的例子都是使用合法分隔符的模式

    /foo bar/#^[^0-9]$#+php+%[a-zA-Z0-9_-]%{this is a pattern}

    可以在结束分隔符后面增加模式修饰符

    元字符

    一些字符被赋予 特殊的涵义,使其不再单纯的代表自己,模式中的这种有特殊涵义的编码字符 称为 元字符。

    一般用于转义字符 ^ 断言目标的开始位置(或在多行模式下是行首) $ 断言目标的结束位置(或在多行模式下是行尾) . 匹配除换行符外的任何字符(默认) [ 开始字符类定义 ] 结束字符类定义 | 开始一个可选分支 ( 子组的开始标记 ) 子组的结束标记 ? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词) * 量词,0 次或多次匹配 + 量词,1 次或多次匹配 { 自定义量词开始标记 } 自定义量词结束标记
    元字符 描述


    模式中方括号内的部分称为“字符类”。 在一个字符类中仅有以下可用元字符

    转义字符 ^ 仅在作为第一个字符(方括号内)时,表明字符类取反 - 标记字符范围
    元字符 描述

    字符类

    方括号中的内容就是字符类

    有一些预定义字符类

    d 任意十进制数字 D 任意非十进制数字 h 任意水平空白字符(since PHP 5.2.4) H 任意非水平空白字符(since PHP 5.2.4) s 任意空白字符 S 任意非空白字符 任意垂直空白字符(since PHP 5.2.4) V 任意非垂直空白字符(since PHP 5.2.4) w 任意单词字符 W 任意非单词字符
    字符类 描述

    原子

    可见原子

    如abc

    不可见原子

    量词 * 等价于 {0,} + 等价于 {1,} ? 等价于 {0,1}
    量词

    断言

    简单的断言代码有、B、 A、 Z、z、 ^、$

    前瞻断言

    从当前位置向前测试

    (?=) (?!)

    w+(?=;)匹配一个单词紧跟着一个分号但是匹配结果不会包含分号

    后瞻断言

    从当前位置向后测试

    (?<=) (?<!)

    (?<!foo)bar 用于查找任何前面不是 ”foo” 的 ”bar”

    模式修饰符 U 这个修饰符逆转了量词的”贪婪”模式,使量词默认为非贪婪的 i 大小写不敏感匹配 x 忽略空白 s 点号元字符匹配所有字符,包含换行符。如果没有这个修饰符,点号不匹配换行符 …
    模式修饰符

    PCRE 函数
    preg_filter — 执行一个正则表达式搜索和替换preg_grep — 返回匹配模式的数组条目preg_last_error — 返回最后一个PCRE正则执行产生的错误代码preg_match_all — 执行一个全局正则表达式匹配preg_match — 执行一个正则表达式匹配preg_quote — 转义正则表达式字符preg_replace_callback_array — Perform a regular expression search and replace using callbackspreg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换preg_replace — 执行一个正则表达式的搜索和替换preg_split — 通过一个正则表达式分隔字符串

    PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表