Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - [решено] Спарсить содержание журнала регулярными выражениями из txt-файла (PHP)

Ответить
Настройки темы
Теория - [решено] Спарсить содержание журнала регулярными выражениями из txt-файла (PHP)

Новый участник


Сообщения: 44
Благодарности: 7

Профиль | Отправить PM | Цитировать


Доброго времени суток!

Никак не могу разобраться с регулярными выражениями для следующей задачи.

Есть содержание большого журнала (сборника статей) в текстовом файле.
Из него нужно выдернуть название статьи, авторов и номера страниц (её начало и конц).
Но в начале нужно текст содержания привести в порядок и убрать из него все лишнее.

Так выглядит содержание
читать дальше »
СОДЕРЖАНИЕ
ЗАГОЛОВОК ТЕМЫ
10 Н.А. Петров, Д.С. Петров, А.В. Петров Блок тестирования современных высокочастотных
полупроводниковых интегральных устройств

20 Д.Е. Петров Применение эффекта Доплера для определения скоростей движущихся объектов

30 М. Петров, Ю.А. Петров, Я.О. Петров It-проект «Жизнь обычных людей»

40 М.В. Петров Проблема загрязнения южных побережий
Приморского края
ЗАГОЛОВОК ТЕМЫ
50 А.В. Петров Принципы параметрического синтеза цифровых систем управления

60 А.В. Петров Разработка каталитических нейтрализаторов отработавших газов с новыми каталитическими
покрытиями

ЗАГОЛОВОК ТЕМЫ
70 Иван Петров Организация учебного процесса в российских и китайских школах

80 А. Петров Brigdging the pacific: the increasing importance of
English language and American culture in the Russian Far East

90 К.А. Петров Educational service trade ? export and import of
xxi century

100 Vasay Petrov Chinese students’ interest and consciousness in learning English



Нужно составить правило для разбора каждой строки:
Если первое в строке стоит число затем Пробел и затем Заглавная буква
то это начало статьи

Иначе, если строка НЕ стоит из одних заглавных букв (отсекаем название заголовка новой темы)
то это продолжение названия статьи.

Далее склеиваем начало статьи с продолжением и помещаем в массив для дальнейшей обработки.

Составил регулярное выражение для первого условия:
Код: Выделить весь код
^([0-9]+) ([А-ЯA-Z]
регулярное выражение для второго условия:
Код: Выделить весь код
^([А-ЯA-Z]+) ([А-ЯA-Z]+)

Парсинг текст делаю на PHP.
Получилось следующее:
PHP код: Выделить весь код

$cont file('./journals/2012/s.txt');

$j=-1;
foreach (
$cont as $line_num => $line) {
    if(
preg_match("/^([0-9]+) ([А-ЯA-Z])/"$line$result)){
        
$j++;    
        
$artic[$j]=$line;}
    else if(!
preg_match("/^([А-ЯA-Z]+) ([А-ЯA-Z]+)/"$line$result)){
        
$artic[$j]=$artic[$j].$line; }
}
for(
$i=0;$i<30;$i++)
    echo 
$artic[$i]."<br/>"

Результат
читать дальше »
10 Н.А. Петров, Д.С. Петров, А.В. Петров Блок тестирования современных высокочастотных полупроводниковых интегральных устройств
20 Д.Е. Петров Применение эффекта Доплера для определения скоростей движущихся объектов
30 М. Петров, Ю.А. Петров, Я.О. Петров It-проект «Жизнь обычных людей»
40 М.В. Петров Проблема загрязнения южных побережий Приморского края ЗАГОЛОВОК ТЕМЫ
50 А.В. Петров Принципы параметрического синтеза цифровых систем управления
60 А.В. Петров Разработка каталитических нейтрализаторов отработавших газов с новыми каталитическими покрытиями ЗАГОЛОВОК ТЕМЫ
70 Иван Петров Организация учебного процесса в российских и китайских школах
80 А. Петров Brigdging the pacific: the increasing importance of English language and American culture in the Russian Far East
90 К.А. Петров Educational service trade ? export and import of xxi century
100 Vasay Petrov Chinese students’ interest and consciousness in learning English


Вроде бы и работает.
НО почему Заголовок темы определяется как продолжение названия статьи, второе правило не работает?

Отправлено: 09:53, 14-09-2013

 

Новый участник


Сообщения: 44
Благодарности: 7

Профиль | Отправить PM | Цитировать


Разобрался сам.

регулярное выражение для второго условия:
Код: Выделить весь код
^[А-ЯA-Z]+[А-ЯA-Z ]+
Плюс, проблема была с разными кодировками, в файле была Win-1251, а в скрипте UTF-8.
Поставил везде одинаковую кодировку, с помощью блокнота++.
Теперь все работает, осталось только разобрать строки на составные части.

Отправлено: 16:45, 14-09-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - [решено] Спарсить содержание журнала регулярными выражениями из txt-файла (PHP)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Спарсить данные из txt nfs98 Скриптовые языки администрирования Windows 2 12-09-2013 17:19
CMD/BAT - Найти txt файл по имени и заменить содержание файла на мой текст! Fresenius Скриптовые языки администрирования Windows 5 21-11-2012 08:49
CMD/BAT - пакетное конвертирование с регулярными выражениями Fannylife1989 Скриптовые языки администрирования Windows 15 05-12-2010 17:06
CMD/BAT - [решено] Вывод содержание файла из интернета ??? men232 Скриптовые языки администрирования Windows 4 26-10-2010 09:29
Помогите разобраться с регулярными выражениями pingUIN Хочу все знать 2 31-01-2007 12:26




 
Переход