Не всё так просто, хотя и не слишком сложно когда уже кажется думаешь что разобрался :)
Ошибка заключается в том, что
- изначально использование preg_split было не в тему, т.к. функция предназначена для разделения, а не для поиска по шаблону,
-
любая комбинация левой и правой части выражения выдаст результат
(в примере выше слева возвращает ?, а справа "т", т.к. модификатор i получается "Т" и наличие "-" необязательно)
-
Пример проще
$str= 'A test string!- The test string?- The new test string!The test string?aaaa- The new test stringThe other strings.';
$res = preg_split('#(?<=\?|\!|\.)(?=\-)#', $str);
echo "<pre>".print_r($res, 1)."</pre>";
Array
(
[0] => A test string!
[1] => - The test string?
[2] => - The new test string!The test string?aaaa- The new test stringThe other strings.
)
Из которого можно сделать вывод, что данное регулярное выражение может разделить строку по разделителям (
1. ?-
2. !-
3. .-
)
при этом сами разделители остаются в чем тоже очень много пользы.