【问题标题】:PHP Regex to match multilinePHP正则表达式匹配多行
【发布时间】:2017-01-07 16:05:19
【问题描述】:

我需要构建一个模式来匹配多行代码

    $data['infos'] = array();
    foreach ($infos as $info) {
        $data['infos'][] = array(
            'title' => $special['title'],
            'text'  => $special['summary'],,
        );
    }
    $data['next'] = $this->url('page/next');
    $data['page'] = $this->url('page/curent');

我的尝试是使用(\$data\['infos']\[] = array\(\n).*\n\t.*\n\t*\)\; 但它不起作用,但是当我尝试(\$data\['infos']\[] = array\() 时只有这部分匹配

$data['infos'][] = array(

我如何构建模式以仅匹配此部分

        $data['infos'][] = array(
            'title' => $special['title'],
            'text'  => $special['summary'],,
        );

我也喜欢看到它很简单,这样我就可以针对其他类似的情况对其进行修改。已经用了一整天没有运气,请帮帮我。

提前致谢。

【问题讨论】:

  • 也许something like this 就足够了。取决于您的输入。
  • 谢谢,我试过了,这么好的工具,我删除了全局选项gs并添加了s,它就像魅力一样工作
  • 请将其作为答案发布,以便我接受

标签: php regex preg-match


【解决方案1】:

一个简单的模式是否足够取决于您输入的内容。

$re = '~\Q$data[\'infos\'][]\E.*?\);~s';
  • \Q...\E 用于字面匹配(也可以转义括号/美元)。
  • .*?单行模式 (s flag) 匹配lazily 任意数量的any character

See demo at regex101php demo at eval.in

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多