ФорумПрограммированиеPHP для идиотов → Помогите с регуляркой

Помогите с регуляркой

  • Mars

    Сообщения: 304 Репутация: N Группа: Кто попало

    Spritz 19 декабря 2010 г. 11:45

    есть текстовый файл

    1. Банк данных (система баз данных) – это система, в которой реализованы функции централизованного хранения, накопления и обработки информации, организованной в одну или несколько баз данных.
    Если раньше банк данных являлся частью АИС, то сейчас он выделен в отдельный вид автоматизированных информационных систем.
    БнД состоит из одной или нескольких БД и СУБД. Для его корректной работы необ-ходим администратор базы данных, вычислительная система, программное обеспечение (интерфейс пользователя), обслуживающий персонал, пользователь.

    2. Банки данных, как целое, как правило классифицируют по экономико-правовым признакам.
    По условиям предоставления услуг различают безвозмездные и платные банки, которые, в свою очередь, делятся на коммерческие и бесприбыльные (научные, библиотечные или социально-значимые).
    По форме собственности БнД делятся на государственные и негосударственные. По степени доступности различают общедоступные и с ограниченным кругом пользователей.
    Другие виды классификации связаны с отдельными компонентами БнД.

    Классификация БД по модели данных:

    Примеры:
    иерархические,
    сетевые,
    реляционные,
    объектные,
    объектно-ориентированные,
    объектно-реляционные.

    Классификация БД по технологии физического хранения:
    БД во вторичной памяти (традиционные);
    БД в оперативной памяти (in-memory databases);
    БД в третичной памяти (tertiary databases).

    Классификация БД по содержимому:

    Примеры:
    Географические
    Исторические
    Научные
    Мультимедийные.

    Классификация БД по степени распределённости:
    централизованные (сосредоточенные) и
    распределённые.

    Отдельное место в теории и практике занимают пространственные (англ. spatial), временные, или темпоральные (temporal) и пространственно-временные (spatial-temporal) БД.

    3. Систе?ма управле?ния ба?зами да?нных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных[1].
    Основные функции СУБД
    управление данными во внешней памяти (на дисках);
    управление данными в оперативной памяти с использованием дискового кэша;
    журнализация изменений, резервное копирование и восстановление базы данных после сбоев;
    поддержка языков БД (язык определения данных, язык манипулирования данными).

    Обычно современная СУБД содержит следующие компоненты:
    ядро, которое отвечает за управление данными во внешней и оперативной памяти, и журнализацию,
    процессор языка базы данных, обеспечивающий оптимизацию запросов на извлечение и изменение данных и создание, как правило, машинно-независимого исполняемого внутреннего кода,
    подсистему поддержки времени исполнения, которая интерпретирует программы манипуляции данными, создающие пользовательский интерфейс с СУБД
    а также сервисные программы (внешние утилиты), обеспечивающие ряд дополнительных возможностей по обслуживанию информационной системы.

    4. Microsoft Office Access или просто Microsoft Access — реляционная СУБД[1] корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных.
    Основные компоненты MS Access:
    построитель таблиц;
    построитель экранных форм;
    построитель SQL-запросов (язык SQL в MS Access не соответствует стандарту ANSI);
    построитель отчётов, выводимых на печать.

    5. Часто встречаемые этапы
    Исследование и анализ проблемы, для решения которой создаётся база данных.
    Построение Инфологической и Даталогической модели.
    Нормализация полученных Инфологических и Даталогических моделей. По окончании этого этапа, как правило получают заготовки таблицы БД и набор связей между ними (первичные и вторичные ключи)
    Проверка целостности БД (Целостность базы данных)
    Выбор физического способа хранения и эксплуатации (тех. средства) базы данных.
    Проектирование входных и выходных форм.
    Разработка интерфейса приложения.
    Функциональное наполнение приложения
    Отладка: проверка на корректность работы функционального наполнения системы
    Тестирование: тест на корректность ввода вывода данных, тест на максимальное количество активных сессий и т. д.
    Ввод в эксплуатацию: отладка ИТ-инфраструктуры, обучение пользователей и ИТ-персонала.
    При необходимости добавления выходных форм и дополнительной функциональности. В случае если необходимы более серьёзные изменения, следует повторить все шаги с первого.
    Вывод из эксплуатации: перенос данных в новую СУБД.

    основные: анализ, проектирование, разработка, тестирование, эксплуатация

    6. Конц.схема - структура бд, описанная графически. В реляционных базах данных схема определяет таблицы, поля в каждой таблице, а также отношения между полями и таблицами.

    7. Существует несколько типов связей между сущностями: "один к одному", "один ко многим" и "многие ко многим".
    Связь "один к одному" встречается редко. Например, у нас есть таблица с информацией о всех сотрудниках и таблица с информацией о всех торговых агентах, которые являются сотрудниками нашего предприятия. Записи в таких таблицах могут быть связаны отношением "один к одному".
    Связь "один ко многим" - наиболее распространенный тип связей. Например, один торговый агент может выписывать много счетов и т.п.
    Очень часто используется и связь "многие ко многим". Например, один покупатель может покупать товары нескольких видов, и при этом товар одного вида может "покупаться" разными покупателями. Обычно в СУБД возможности явно определить отношение "многие-ко-многим" нельзя, но это часто делается обходным способом.
    Участие каждой сущности в связи может быть полным или частичным. Пример - наша связь "сотрудник - торговый агент". Со стороны торгового агента эта связь полная, потому что торговый агент не может не быть сотрудником предприятия. Со стороны сотрудника эта связь - частичная, поскольку сотрудник вполне может не быть торговым агентом.

    8. Иерархическая модель данных — логическая модель данных в виде древовидной структуры.

    9. Сетевая модель данных — логическая модель данных, являющаяся расширением иерархического подхода, строгая математическая теория, описывающая структурный аспект, аспект целостности и аспект обработки данных в сетевых базах данных.
    Разница между иерархической моделью данных и сетевой состоит в том, что в иерархических структурах запись-потомок должна иметь в точности одного предка, а в сетевой структуре данных у потомка может иметься любое число предков.

    10. Реляционная модель данных — логическая модель данных, прикладная теория построения баз данных, которая является приложением к задачам обработки данных таких разделов математики как теории множеств и логика первого порядка.
    На реляционной модели данных строятся реляционные базы данных.
    Кроме того, в состав реляционной модели данных включают теорию нормализации.

    11. Классическая реляционная модель предполагает неделимость данных, хранящихся в полях записей таблиц. Постреляционная модель представляет собой расширенную реляционную модель, снимающую ограничение неделимости данных. Модель допускает многозначные поля – поля, значения которых состоят из подзначений . Набор значений многозначных полей считается самостоятельной таблицей, встроенной в основную таблицу.
    Достоинством постреляционной модели является возможность представления совокупности связанных реляционных таблиц одной постреляционной таблицей. Это обеспечивает высокую наглядность представления информации и повышение эффективности ее обработки.
    Недостатком постреляционной модели является сложность решения проблемы обеспечения целостности и непротиворечивости хранимых данных.

    12. В объектно-ориентированной модели при представлении данных имеется возможность идентифицировать отдельные записи базы данных. Между записями и функциями их обработки устанавливаются взаимосвязи с помощью механизмов, подобных соответствующим средствам в объектно-ориентированных языках программирования.

    13. Многомерный подход к представлению данных появился практически одновременно с реляционным , но интерес к многомерным СУБД стал приобретать массовый характер с середины 90-х годов. Толчком послужила в 1993 году статья Э. Кодда. В ней были сформулированы 12 основных требований к системам класса OLAP ( OnLine Analytical Processing – оперативная аналитическая обработка), важнейшие из которых связаны с возможностями концептуального представления и обработки многомерных данных.


    нужно достать из него ответы

    делаю так:
    <?php
    $f = file_get_contents('ответы.txt');
    preg_match_all('/(\d+\.\s.+?)(\n\d+\.\s.|$)/s', $f, $answers);
    echo '<pre>';
    print_r($answers[1]);


    получаю ответ

    Array
    (
    [0] => 1. Банк данных (система баз данных) – это система, в которой реализованы функции централизованного хранения, накопления и обработки информации, организованной в одну или несколько баз данных.
    Если раньше банк данных являлся частью АИС, то сейчас он выделен в отдельный вид автоматизированных информационных систем.
    БнД состоит из одной или нескольких БД и СУБД. Для его корректной работы необ-ходим администратор базы данных, вычислительная система, программное обеспечение (интерфейс пользователя), обслуживающий персонал, пользователь.

    [1] => 3. Систе?ма управле?ния ба?зами да?нных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных[1].
    Основные функции СУБД
    управление данными во внешней памяти (на дисках);
    управление данными в оперативной памяти с использованием дискового кэша;
    журнализация изменений, резервное копирование и восстановление базы данных после сбоев;
    поддержка языков БД (язык определения данных, язык манипулирования данными).

    Обычно современная СУБД содержит следующие компоненты:
    ядро, которое отвечает за управление данными во внешней и оперативной памяти, и журнализацию,
    процессор языка базы данных, обеспечивающий оптимизацию запросов на извлечение и изменение данных и создание, как правило, машинно-независимого исполняемого внутреннего кода,
    подсистему поддержки времени исполнения, которая интерпретирует программы манипуляции данными, создающие пользовательский интерфейс с СУБД
    а также сервисные программы (внешние утилиты), обеспечивающие ряд дополнительных возможностей по обслуживанию информационной системы.

    [2] => 5. Часто встречаемые этапы
    Исследование и анализ проблемы, для решения которой создаётся база данных.
    Построение Инфологической и Даталогической модели.
    Нормализация полученных Инфологических и Даталогических моделей. По окончании этого этапа, как правило получают заготовки таблицы БД и набор связей между ними (первичные и вторичные ключи)
    Проверка целостности БД (Целостность базы данных)
    Выбор физического способа хранения и эксплуатации (тех. средства) базы данных.
    Проектирование входных и выходных форм.
    Разработка интерфейса приложения.
    Функциональное наполнение приложения
    Отладка: проверка на корректность работы функционального наполнения системы
    Тестирование: тест на корректность ввода вывода данных, тест на максимальное количество активных сессий и т. д.
    Ввод в эксплуатацию: отладка ИТ-инфраструктуры, обучение пользователей и ИТ-персонала.
    При необходимости добавления выходных форм и дополнительной функциональности. В случае если необходимы более серьёзные изменения, следует повторить все шаги с первого.
    Вывод из эксплуатации: перенос данных в новую СУБД.

    основные: анализ, проектирование, разработка, тестирование, эксплуатация

    [3] => 7. Существует несколько типов связей между сущностями: "один к одному", "один ко многим" и "многие ко многим".
    Связь "один к одному" встречается редко. Например, у нас есть таблица с информацией о всех сотрудниках и таблица с информацией о всех торговых агентах, которые являются сотрудниками нашего предприятия. Записи в таких таблицах могут быть связаны отношением "один к одному".
    Связь "один ко многим" - наиболее распространенный тип связей. Например, один торговый агент может выписывать много счетов и т.п.
    Очень часто используется и связь "многие ко многим". Например, один покупатель может покупать товары нескольких видов, и при этом товар одного вида может "покупаться" разными покупателями. Обычно в СУБД возможности явно определить отношение "многие-ко-многим" нельзя, но это часто делается обходным способом.
    Участие каждой сущности в связи может быть полным или частичным. Пример - наша связь "сотрудник - торговый агент". Со стороны торгового агента эта связь полная, потому что торговый агент не может не быть сотрудником предприятия. Со стороны сотрудника эта связь - частичная, поскольку сотрудник вполне может не быть торговым агентом.

    [4] => 9. Сетевая модель данных — логическая модель данных, являющаяся расширением иерархического подхода, строгая математическая теория, описывающая структурный аспект, аспект целостности и аспект обработки данных в сетевых базах данных.
    Разница между иерархической моделью данных и сетевой состоит в том, что в иерархических структурах запись-потомок должна иметь в точности одного предка, а в сетевой структуре данных у потомка может иметься любое число предков.

    [5] => 11. Классическая реляционная модель предполагает неделимость данных, хранящихся в полях записей таблиц. Постреляционная модель представляет собой расширенную реляционную модель, снимающую ограничение неделимости данных. Модель допускает многозначные поля – поля, значения которых состоят из подзначений . Набор значений многозначных полей считается самостоятельной таблицей, встроенной в основную таблицу.
    Достоинством постреляционной модели является возможность представления совокупности связанных реляционных таблиц одной постреляционной таблицей. Это обеспечивает высокую наглядность представления информации и повышение эффективности ее обработки.
    Недостатком постреляционной модели является сложность решения проблемы обеспечения целостности и непротиворечивости хранимых данных.

    [6] => 13. Многомерный подход к представлению данных появился практически одновременно с реляционным , но интерес к многомерным СУБД стал приобретать массовый характер с середины 90-х годов. Толчком послужила в 1993 году статья Э. Кодда. В ней были сформулированы 12 основных требований к системам класса OLAP ( OnLine Analytical Processing – оперативная аналитическая обработка), важнейшие из которых связаны с возможностями концептуального представления и обработки многомерных данных.
    )


    тоесть он какбы прыгает через один ответ, вот собственно помогите как быть
  • Mars

    Сообщения: 304 Репутация: N Группа: Кто попало

    Spritz 19 декабря 2010 г. 11:53, спустя 8 минут 1 секунду

    никто не умеет, хуета
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 19 декабря 2010 г. 11:54, спустя 59 секунд

    умеет.. просто нихрена не понятно, что тебе надо…
    Высокоуровневое абстрактное говно
  • Mars

    Сообщения: 304 Репутация: N Группа: Кто попало

    Spritz 19 декабря 2010 г. 11:56, спустя 1 минуту 47 секунд

    надо чтобы было так

    Array (
    [0] => 1. Банк данных и тд
    [1] => 2. блаблабла
    [2] => 3. блаблабла
    Спустя 45 сек.
    а с той регуляркой что сделал я он выдаёт через один:
    Array (
    [0] => 1. блаблабла
    [1] => 3. блаблабла
    [2] => 5. блаблабла
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 19 декабря 2010 г. 12:00, спустя 4 минуты 19 секунд

    Array (
    [0] => 1. Банк данных и тд
    [1] => 2. блаблабла
    [2] => 3. блаблабла

    получаю ответ
     
    Array
    (
        [0] => 1. Банк данных

    ???
    не всё полезно, что в swap полезло
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 19 декабря 2010 г. 12:02, спустя 1 минуту 40 секунд

    master, у него выводит 1, 3, 5… пропускает четные… а надо 1, 2, 3, 4, 5…
    Высокоуровневое абстрактное говно
  • Mars

    Сообщения: 304 Репутация: N Группа: Кто попало

    Spritz 19 декабря 2010 г. 12:09, спустя 7 минут 25 секунд

    Тоесть каким образом мы определяем положение ответа

    {1. ТУТ НАХОДИТСЯ ТЕКСТ ОТВЕТА}
    перед следующим вопросом перенос строки
    2. СЛЕДУЮЩИЙ ВОПРОС

    1. = \d+\.\s
    ТЕКСТ ОТВЕТА = .+?
    Спустя 91 сек.
    Если сделать до переноса строки то не сработает потому что внутри самого ответа тоже может быть перенос строки
    Спустя 269 сек.
    еще раз демонстрирую мою регулярку
    /(\d+\.\s.+?)(\n\d+\.\s.|$)/s

    /(от цифры с точкой и пробелом взять текст включая цифру с точкой и пробелом) (до переноса строки с цифрой точкой и пробелом ИЛИ до конца строки)/применительно многострочно
    Спустя 73 сек.
    подозреваю это из-за второй части выражения - (\n\d+\.\s.|$) но как тогда задать условие?
  • Mars

    Сообщения: 304 Репутация: N Группа: Кто попало

    Spritz 19 декабря 2010 г. 12:21, спустя 11 минут 26 секунд

    хуета - никто не может распарсить этот документ
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 19 декабря 2010 г. 12:27, спустя 6 минут 6 секунд

    в тексте могут попасться другие цифра с точкой.. сделай свой какой-нить разделитель, что-нить в роде /*********************/
    Высокоуровневое абстрактное говно
  • Mars

    Сообщения: 304 Репутация: N Группа: Кто попало

    Spritz 19 декабря 2010 г. 12:27, спустя 49 секунд


    в тексте могут попасться другие цифра с точкой.. сделай свой какой-нить разделитель, что-нить в роде /*********************/


    например?
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 19 декабря 2010 г. 12:29, спустя 1 минуту 38 секунд

    прочитай еще раз мое сообщение
    Высокоуровневое абстрактное говно
  • Mars

    Сообщения: 304 Репутация: N Группа: Кто попало

    Spritz 19 декабря 2010 г. 12:33, спустя 3 минуты 25 секунд

    дело в том, что разделителей нету, и цифра с точкой и пробелом внутри самого текста не встречается
    Спустя 30 сек.
    и я не могу их поставить потому что такая хуйня вот
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 19 декабря 2010 г. 12:52, спустя 19 минут 52 секунды

    $f = file_get_contents('ответы.txt');
    $new = preg_split('/(^|\n)\d+\.\s/', $f, -1);
    echo '<pre>';
    print_r($new);
    Высокоуровневое абстрактное говно
  • Mars

    Сообщения: 304 Репутация: N Группа: Кто попало

    Spritz 19 декабря 2010 г. 13:02, спустя 9 минут 54 секунды

    спасибо!
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 19 декабря 2010 г. 13:03, спустя 56 секунд

    кушай, не обляпайся)))
    Высокоуровневое абстрактное говно

Пожалуйста, авторизуйтесь, чтобы написать комментарий!