这是我的字符串,单个字符串中非常友好的错误。
第1行的服务代码名称不能为空。
第2行的服务代码名称不能为空。
服务代码名称不能 第3行空了。
第4行的服务代码名称不能为空。
在 第5行的服务代码名称不能为空。
服务代码名称 在第6行不能为空。
服务代码名称不能为空 第7行。
第8行的服务代码名称不能为空。
第36行的服务代码名称不能为空。
我可以使用此正则表达式exspression对事件进行计数:'/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_match_all()
并在方法的参数3上配置$output
。但是,我认为我的regex
错误,它不包括前进位?
非常感谢提前。
答案 0 :(得分:4)
您可以在此正则表达式中使用preg_match_all
:
/\w.+?line \d+\./
此正则表达式从单词字符开始匹配,匹配到1+位后跟一个点。
<强>代码:强>
if (preg_match_all('/\w.+?line \d+\./', $str, $m))
print_r($m[0]);
Array
(
[0] => The service code name can not be empty at line 1.
[1] => The service code name can not be empty at line 2.
[2] => The service code name can not be empty at line 3.
[3] => The service code name can not be empty at line 4.
[4] => The service code name can not be empty at line 5.
[5] => The service code name can not be empty at line 6.
[6] => The service code name can not be empty at line 7.
[7] => The service code name can not be empty at line 8.
[8] => The service code name can not be empty at line 36.
)