【问题标题】:preg_match with multiline doesn't work correctly [duplicate]preg_match 与多行无法正常工作[重复]
【发布时间】:2020-07-28 17:59:58
【问题描述】:

我有以下代码:

$data = "numbers{One
Two
Three}";

preg_match("~(?<=numbers{)(.*?)(?=})~", $data, $result);
echo $result[0];

preg_match 不起作用我不知道为什么 如果数据只有一行,那么它可以工作

【问题讨论】:

    标签: php regex preg-match line-breaks multiline


    【解决方案1】:

    . 不匹配换行符使用 s 修饰符:

    ~(?<=numbers{)(.*?)(?=})~s
    

    或者你可以只匹配 NOT }:

    ~(?<=numbers{)([^}]*)(?=})~
    

    不知道你们所有的要求,你也许可以简化它:

    preg_match("~numbers{([^}]*)}~", $data, $result);
    echo $result[1];
    

    【讨论】:

      【解决方案2】:

      所有正则表达式引擎都支持许多搜索修饰符,例如不区分大小写的搜索或 multiLineSourse,请尝试“m”修饰符

      preg_match("~(?<=numbers{)(.*?)(?=})~ms", $data, $result);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-01
        • 2016-02-15
        • 2017-07-15
        • 2015-09-06
        • 2016-05-06
        • 2016-05-12
        • 2018-07-19
        相关资源
        最近更新 更多