【发布时间】: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
我有以下代码:
$data = "numbers{One
Two
Three}";
preg_match("~(?<=numbers{)(.*?)(?=})~", $data, $result);
echo $result[0];
preg_match 不起作用我不知道为什么 如果数据只有一行,那么它可以工作
【问题讨论】:
标签: php regex preg-match line-breaks multiline
. 不匹配换行符使用 s 修饰符:
~(?<=numbers{)(.*?)(?=})~s
或者你可以只匹配 NOT }:
~(?<=numbers{)([^}]*)(?=})~
不知道你们所有的要求,你也许可以简化它:
preg_match("~numbers{([^}]*)}~", $data, $result);
echo $result[1];
【讨论】:
所有正则表达式引擎都支持许多搜索修饰符,例如不区分大小写的搜索或 multiLineSourse,请尝试“m”修饰符
preg_match("~(?<=numbers{)(.*?)(?=})~ms", $data, $result);
【讨论】: