[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по регулярке
GutsOut
Здравствуйте. Имеем текст след. вида:

Н.А. Дубинский
Уплата утилизационного сбора при ввозе автомобилей в Республику Беларусь. Часть 1
В статье описан порядок и особенности уплаты утилизационного сбора при ввозе автомобилей на территорию Республики Беларусь.
В.Н. Лемеш
Порядок действий в связи с отменой в 2014 году амортизационной премии
В материале описан порядок и особенности бухгалтерского учета объектов, по которым на счетах бухгалтерского учета за период действия льготы по амортизационной премии были произведены соответствующие записи на счетах бухгалтерского учета.
Е.А. Авчинникова
Учет процентов по кредитам
Несмотря на кажущуюся простоту, учет процентов по кредитам до сих пор вызывает массу вопросов, особенно в части налогового учета. Автором рассмотрены особенности и проблемные моменты учета процентов по кредитам и займам.
И.Е. Демидович
Начисление пособий по временной нетрудоспособности работникам резидентов Парка высоких технологий
В статье описаны особенности расчета и начисления пособий по временной нетрудоспособности работникам резидентов Парка высоких технологий, а также приведен ряд практических ситуаций.
Л.И. Пиянзина
Расчет численности работников для целей применения особых режимов налогообложения
В материале в примерах описана методика расчета численности работников для целей применения особых режимов налогообложения.

Задача такая - распихать статьи по массиву т.е.:
[0] => 'Н.А. Дубинский
Уплата утилизационного сбора при ввозе автомобилей в Республику Беларусь. Часть 1
В статье описан порядок и особенности уплаты утилизационного сбора при ввозе автомобилей на территорию Республики Беларусь.'
...
[4] => 'Л.И. Пиянзина
Расчет численности работников для целей применения особых режимов налогообложения
В материале в примерах описана методика расчета численности работников для целей применения особых режимов налогообложения.'

Что надо добавить/изменить в моей регулярке
"#[А-Я]\.[А-Я]\.\s*[А-Я][а-я]+\s*(.+)[А-Я]\.[А-Я]\.\s*[А-Я][а-я]*#s"
чтобы сохранялся текст до первой попавшейся фамилии?
DedMorozzz
предложения всегда 2? В "описании"

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
DedMorozzz
Видимо ответа на мой вопрос так и не будет, но в данном случае выглядеть будет так:

preg_match_all("#[А-Я]\.[А-Я]\.\s*[А-Я][а-я]+[\\r\\n]+.*?[\\r\\n]+.*?[\\r\\n]+#u",$text,$matches);


_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
GutsOut
Цитата (DedMorozzz @ 28.04.2014 - 18:12)
предложения всегда 2? В "описании"

Извиняюсь, что долго отвечал. Предложений может быть n-ое количество
DedMorozzz
Тогда нужен дополнительный критерий. Такой как 2 ентера после "блока"
Бить по аббревиатурам - бессмысленно, т.к. это может встретится в тексте
Другими словами необходим явный критерий, по которому можно безошибочно определить конец одного блока

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
BaNru
Можно попробовать так
$p = preg_split("~^[А-Я]\.[А-Я]\.[[:blank:]][а-яА-Я]+$~mUu",$str);
print_r($p);

preg_match_all("~^[А-Я]\.[А-Я]\.[[:blank:]][а-яА-Я]+$~mUu",$str,$m, PREG_SET_ORDER);
print_r($m);

echo $m[0][0].$p[1];


Две проблемы
1) preg_split выдает под первым вхождение пустоту, т.е. Надо отсчет вести не от 0, а от 1
2) preg_match_all содержит в начале перенос строки. От него надо будет избавится через условие с preg_replace

update
Ну и разумеется Римский-Корсаков не пройдет, надо добавить тирешку и дефиску
GutsOut
Всем огромное спасибо, задача решена!
GutsOut
Подскажите, пожалуйста, на счет такого текста(ниже). Задача аналогичная - распихать статьи по массиву. Как я понимаю тут мы должны отталкиваться от ссылки: т.е.
1.Находим ссылку
2.Захватываем предыдущую строку(заголовок)
3.Ищем следующую ссылку(ссылка следующей статьи)
4.Исключаем ее и предыдущую строку(заголовок следующей статьи)

Подскажите, пожалуйста, как это реализовать или другую идею.

Собственно, сам текст:
О тарифах на услуги транспортных терминалов
https://url/library/text/id/50232111
Постановлением установлены предельные максимальные тарифы на услуги транспортных железнодорожных и автомобильных терминалов.
Утверждена Инструкция о порядке установления и применения тарифов на услуги транспортных железнодорожных и автомобильных терминалов, действие которой распространяется на все юридические лица и индивидуальных предпринимателей, занимающихся предоставлением услуг на территории Республики Беларусь (далее — субъекты предпринимательской деятельности).
Инструкцией установлено, что:
• субъекты предпринимательской деятельности устанавливают тарифы на услуги, которые не должны превышать установленные предельные максимальные тарифы...
О некоторых вопросах развития единого расчетного и информационного пространства в Республике Беларусь
https://url/library/text/id/2111675
В соответствии с Постановлением республиканское унитарное предприятие почтовой связи «Белпочта» определено платежным агентом единого расчетного и информационного пространства.
О порядке выплаты в 2014 году надбавок за реализованную сельскохозяйственную продукцию
https://url/library/text/id/52342121
Во исполнение п. 2 и на основании подп. 1.3 постановления Совета Министров Республики Беларусь от 22 января 2014 г. № 53 «О надбавках за реализованную сельскохозяйственную продукцию» Брестский областной исполнительный комитет решил установить, что в 2014 году надбавки из средств областного бюджета за реализованную сельскохозяйственную продукцию выплачиваются в соответствии с п. 1 постановления Совета Министров Республики Беларусь от 22 января 2014 г. № 53 «О надбавках за реализованную сельскохозяйственную продукцию» сельскохозяйственным организациям, в т.ч. крестьянским (фермерским) хозяйствам, а также организациям, осуществляющим предпринимательскую деятельность по производству (выращиванию, разведению) сельскохозяйственной продукции, льнозаводам, выплата надбавок за реализованную сельскохозяйственную продукцию производится в пределах средств, предусмотренных в областном бюджете.
GutsOut
По сути мне бы только подсказку: как взять строго предыдущую строку, после того как мы нашли
#https:.+?\n(.+?)https:\/\/#s
BaNru
Ответ нашел?
Посмотри картинку
Там в первом столбике внизу "Утверждения"
Среди них есть "вперед смотрящее", "назад смотрящее" и т.д.
Может они помогут.
Я с подобным дела ещё не имел.

Или если идти по легкому пути, то
http://regex101.com/r/mF9hT5
модификатор g использовать в preg_match_all не надо
#(.*)\nhttp#
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.