Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите написать регулярное выражение / 5 сообщений из 5, страница 1 из 1
05.10.2003, 15:41
    #32284285
oz
oz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать регулярное выражение
Драсьте всем. Возникла задача парсить DDL - скрипт на создание базы Oracle. Споткнулся на первом шаге - разделение на блоки, принадлежащие разным таблицам, т.е. скрипт изначально выглядит так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 -- Start of DDL Script for Table MYSCHEMA.TABLE1
 
...
 -- End of DDL Script for Table MYSCHEMA.TABLE1
 

...
 -- Start of DDL Script for Table MYSCHEMA.TABLEn
 
...
 -- End of DDL Script for Table MYSCHEMA.TABLEn
 


Попробовал так (возвращает весь текст, т.е. Start и End берутся начальный и конечный):
Код: plaintext
^-- Start of DDL Script for Table [\w\d\.]+$.+^-- End of DDL Script for Table [\w\d\.]+$

Понимаю, что на .+ необходимо наложить ограничение на подстроку -- End of DDL Script for Table , но как ее задать?
...
Рейтинг: 0 / 0
07.10.2003, 00:34
    #32285662
cvasil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать регулярное выражение
А зачем это делать одним регулярным выражением?
ИМХО проще будет читать файл построчно и разносить его по блокам на основании строк-разделителей.
А вот при парсинге отдельных строк можно и регулярные выражения использовать.
...
Рейтинг: 0 / 0
07.10.2003, 01:05
    #32285669
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать регулярное выражение
>> Понимаю, что на .+ необходимо наложить ограничение на
>> подстроку -- End of DDL Script for Table, но как ее задать?

если я правильно тебя понял то так:
.+?
...
Рейтинг: 0 / 0
07.10.2003, 14:26
    #32286315
oz
oz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать регулярное выражение
2cvasil ...читать файл построчно и разносить его по блокам... - те же булки, вид сверху. Кроме того, проблема уже возникла и закрывать на нее глаза как-то не спортивно.
2Макс М. Да, уже так и сделал (тупо скопировал с одного из примеров). Работает. Вот только так и не понял, как. В доках не описаны примеры меатсимволов-повторений, используемых в таком контексте. Интуитивно понимаю так: одинажды любой набор из одного или более символов... бред. Короче, заморочился совсем.
...
Рейтинг: 0 / 0
07.10.2003, 19:39
    #32286880
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать регулярное выражение
знак вопроса в указанном мною рег. віражении означает "нежадный поиск"
То есть так он ищет от
Код: plaintext
Start of DDL Script for Table [\w\d\.]+$

до первого попавшегося
Код: plaintext
End of DDL Script for Table [\w\d\.]+$


а без знака вопроса происходит "жадный поиск" - ищется все что находится между первым совпадением
Код: plaintext
Start of DDL Script for Table [\w\d\.]+$

и последним совпадением
Код: plaintext
End of DDL Script for Table [\w\d\.]+$


Вообще советую купить "Регулярные выражения" Фридл, второе издание.
Я хоть и знал достаточно неплохо рег. выражения, прочитав книгу, узнал много нового.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите написать регулярное выражение / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]