За последние 24 часа нас посетили 17932 программиста и 1608 роботов. Сейчас ищут 1393 программиста ...

Как заставить preg_split не жрать буквы

Тема в разделе "Регулярные выражения", создана пользователем DeadMoroz, 4 июл 2014.

  1. DeadMoroz

    DeadMoroz Новичок

    С нами с:
    27 июн 2013
    Сообщения:
    18
    Симпатии:
    0
    Бьюсь над разбивкой текста по предложениям с помощью регулярных выражений.
    Есть строка, допустим, "Abc. abcd. Abcd. Abcdef"
    Задача - разбить ее на подстроки по признаку: "." + пробел + любая заглавная буква. Пусть пока для простоты будет "A".
    Пишу: $str_arr = preg_split("/\.\sA/", $str);
    Получаю: ( [0] => Abc. abcd [1] => bcd [2] => bcdef )
    Все круто, но букву A сожрали. Не хорошо.
    Пишу тогда так: $str_arr = preg_split("/\.\s(A)/", $str, -1, PREG_SPLIT_DELIM_CAPTURE);
    Получаю: ( [0] => Abc. abcd [1] => A [2] => bcd [3] => A [4] => bcdef )
    Оно, конечно, лучше, но хочется, чтобы А все же осталось на месте, то есть в первом слове каждого предложения.
    Есть ли какое-то изящное решение силами регулярного выражения? Или придется дополнительно морочиться склейкой? Спасибо
     
  2. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    preg_split("/\.\s(?=[A-Z])/", $str);
     
  3. DeadMoroz

    DeadMoroz Новичок

    С нами с:
    27 июн 2013
    Сообщения:
    18
    Симпатии:
    0
    Уххх. Спасибо!