zoukankan      html  css  js  c++  java
  • PHP与正则表达式 2 :一些修饰符与preg_match_all

    看到了这个函数preg_match_all( )  ,它的作用是进行全局正则表达式匹配

    于是在手册上看到了这个例子:

    <?php
    preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",
        
    "<b>example: </b><div align=left>this is a test</div>",
        
    $out, PREG_PATTERN_ORDER);

    /*
    <
    一个或多个未包含‘〉’的字符    
    >

    零个或多个字符

    〈/

    一个或多个未包含‘〉’的字符
        
    >

    */

    print_r ($out);

    ?> 

    上面那个正则表达式的意义已经写在程序里了。

    结果是:

    Array
    (
        [
    0=&gt; Array
            (
                [
    0=&gt; <b>example: </b>
                [
    1=&gt; <div align="left">this is a test</div>
            )

        [
    1=&gt; Array
            (
                [
    0=&gt; example: 
                [
    1=&gt; this is a test
            )

    )
     

    这个可以理解。但是我忽然注意到了程序里面的那个U

    于是就在想这个U是干什么的?当我把U去掉的结果是:

    Array
    (
        [
    0=&gt; Array
            (
                [
    0=&gt; <b>example: </b><div align="left">this is a test</div>
            )

        [
    1=&gt; Array
            (
                [
    0=&gt; example: <div align="left">this is a test
            )

    )
     

    很有意思,于是我以为这个U的作用是不理会前面的语句。

    但是有些乱,于是Google了一下,不得不说Google这个没有搜到,最后是在百度上查到的。

    其实我还是喜欢Google。。。^_^

    查看结果如下:

    修饰符
    意 义

    /regexp/i
    不区分大小写的匹配

    /regexp/s
    使句点(
    .)匹配任何字符,包括换行符( )

    /regexp/x
    从模式中删除空白符和注释

    /regexp/m
    使
    ^匹配换行符 ( )之后的内容,美元符号($)匹配换行符 ( )之前的内容

    /regexp/e
    如果替换字符串是PHP代码,使用eval()执行该代码来得到实际的替换字符串。

    PHP的Perl兼容正则表达式函数也支持在Perl中不支持的其他修饰符,如表4
    -13所示:

    表4
    -13:其他的PHP标志

    修饰符
    意 义

    /regexp/U
    颠倒子模式的贪婪性;
    *+尽可能少地匹配而不是尽可能多。

    /regexp/u
    把模式字符串当作UTF
    -8编码对待

    /regexp/X
    如果一个反斜杠之后跟着没有特殊意义的字符,将产生一个错误

    /regexp/A
    把锚定位在字符串的开头就像模式中有
    ^一样

    /regexp/D
    使
    $字符仅匹配一行的末尾

    /regexp/S
    使表达式解析器更加小心地检查模式的结构,使得第二次运行时(如在一个循环中)加快速度
  • 相关阅读:
    网络面试题-1
    CentOS7下配置Squid代理
    docker使用harbor搭建私有仓库
    docker 基础命令
    docker要隔离的的6种namespace
    python 列表中的数字转为字符串
    python 排列组合
    filter函数
    Pytest配置文件声明自定义用例标识
    pytest参数化
  • 原文地址:https://www.cnblogs.com/webu/p/2920012.html
Copyright © 2011-2022 走看看