preg_match 多行无法正常工作

preg_match with multiline doesn't work correctly

我有以下代码:

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

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

preg_match 不工作我不知道为什么 如果数据只有一行那么它有效

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

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

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

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

或者您可以只匹配 NOT }:

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

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

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