powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите написать регулярное выражение
5 сообщений из 5, страница 1 из 1
Помогите написать регулярное выражение
    #32284285
Фотография 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
Помогите написать регулярное выражение
    #32285662
Фотография cvasil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем это делать одним регулярным выражением?
ИМХО проще будет читать файл построчно и разносить его по блокам на основании строк-разделителей.
А вот при парсинге отдельных строк можно и регулярные выражения использовать.
...
Рейтинг: 0 / 0
Помогите написать регулярное выражение
    #32285669
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Понимаю, что на .+ необходимо наложить ограничение на
>> подстроку -- End of DDL Script for Table, но как ее задать?

если я правильно тебя понял то так:
.+?
...
Рейтинг: 0 / 0
Помогите написать регулярное выражение
    #32286315
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2cvasil ...читать файл построчно и разносить его по блокам... - те же булки, вид сверху. Кроме того, проблема уже возникла и закрывать на нее глаза как-то не спортивно.
2Макс М. Да, уже так и сделал (тупо скопировал с одного из примеров). Работает. Вот только так и не понял, как. В доках не описаны примеры меатсимволов-повторений, используемых в таком контексте. Интуитивно понимаю так: одинажды любой набор из одного или более символов... бред. Короче, заморочился совсем.
...
Рейтинг: 0 / 0
Помогите написать регулярное выражение
    #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
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите написать регулярное выражение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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