PHP字符串到带分隔符的正则表达式返回的数组

PHP字符串到带分隔符的正则表达式返回的数组,php,regex,Php,Regex,这是我的字符串,一个字符串中的友好错误 第1行的服务代码名称不能为空 第2行的服务代码名称不能为空 服务代码名称不能为空 第3行为空 第4行的服务代码名称不能为空 第5行的服务代码名称不能为空 服务代码名 第6行不能为空 此时服务代码名称不能为空 第7行 第8行的服务代码名称不能为空 第36行的服务代码名称不能为空 我可以使用这个正则表达式计算出现的次数:'/line\d{1,}./' 使用以下代码 $regexStr = '/line \d{1,}./'; $occurences = pre

这是我的字符串,一个字符串中的友好错误

第1行的服务代码名称不能为空

第2行的服务代码名称不能为空

服务代码名称不能为空 第3行为空

第4行的服务代码名称不能为空

第5行的服务代码名称不能为空

服务代码名 第6行不能为空

此时服务代码名称不能为空 第7行

第8行的服务代码名称不能为空

第36行的服务代码名称不能为空

我可以使用这个正则表达式计算出现的次数:
'/line\d{1,}./'

使用以下代码

$regexStr = '/line \d{1,}./';
$occurences = preg_match_all($regexStr, $str, $matches);
但是,我想返回带有分隔符的数组。 例如:

- The service code name can not be empty at line 1.
- The service code name can not be empty at line 2.
- The service code name can not be empty at line 5.
我试着用

$result = preg_split($regexStr, $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
没有任何乐趣,它只是返回了没有分隔符的字符串

另外,如果您是正则表达式专家,您能告诉我如何排除介绍
,如果它是字符串的开头-非常有用

我认为这样做的方法是使用
preg\u match\u all()
和方法参数3上配置的
$output
。然而,我认为我的
regex
是错误的,它不包括继续的位


非常感谢。

您可以使用此正则表达式使用
preg\u match\u all

/\w.+?line \d+\./
这个正则表达式从一个单词字符开始匹配,一直匹配到1+位后跟一个点

代码:

if (preg_match_all('/\w.+?line \d+\./', $str, $m))
    print_r($m[0]);                                                                        


您可以将
preg\u match\u all
与此正则表达式一起使用:

/\w.+?line \d+\./
这个正则表达式从一个单词字符开始匹配,一直匹配到1+位后跟一个点

代码:

if (preg_match_all('/\w.+?line \d+\./', $str, $m))
    print_r($m[0]);                                                                        


您可以在
preg\u match\u all
@anubhava中使用您的上帝,谢谢!非常感谢,非常感谢。你可以在
preg\u match\u all
@anubhava你的上帝,谢谢你!非常感谢,工作很愉快。