Forum Webscript.Ru

Программирование => Perl => Тема начата: DartSidius от 29 Апреля 2007, 05:39:34

Название: регулярка
Отправлено: DartSidius от 29 Апреля 2007, 05:39:34
не могу выцепить текст sql запроса

есть такой sql

-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Апр 29 2007 г., 12:15
-- Версия сервера: 4.1.16
-- Версия PHP: 4.4.2
--
-- БД: `yatchenk_db`
--

-- --------------------------------------------------------

--
-- Структура таблицы `settings`
--

CREATE TABLE `settings` (
  `id` int(20) NOT NULL auto_increment,
  `var` text NOT NULL,
  `type` text NOT NULL,
  `def_value` text NOT NULL,
  `values` text NOT NULL,
  `labels` text NOT NULL,
  `section` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=18 ;

--
-- Дамп данных таблицы `settings`
--

INSERT INTO `settings` VALUES (14, \'USE_ONLINE_AUTH\', \'popup_menu\', \'\', \'Y;N\', \'Y;N\', \'main\');
INSERT INTO `settings` VALUES (2, \'SITE_URL\', \'\', \'\', \'\', \'\', \'main\');
INSERT INTO `settings` VALUES (3, \'IMAGE_URL\', \'\', \'\', \'\', \'\', \'main\');
INSERT INTO `settings` VALUES (4, \'ADMIN_EMAIL\', \'\', \'\', \'\', \'\', \'main\');
INSERT INTO `settings` VALUES (5, \'IMAGE_MAX_SIZE\', \'\', \'\', \'\', \'\', \'sizes\');
INSERT INTO `settings` VALUES (6, \'FILE_MAX_SIZE\', \'\', \'\', \'\', \'\', \'sizes\');
INSERT INTO `settings` VALUES (7, \'SESSION_DEL_TIME\', \'\', \'\', \'\', \'\', \'auth\');
INSERT INTO `settings` VALUES (8, \'THUMBIMAGESIZE\', \'\', \'\', \'\', \'\', \'sizes\');
INSERT INTO `settings` VALUES (9, \'THUMBIMAGESIZE_CROP_X\', \'\', \'\', \'\', \'\', \'sizes\');
INSERT INTO `settings` VALUES (10, \'THUMBIMAGESIZE_CROP_Y\', \'\', \'\', \'\', \'\', \'sizes\');
INSERT INTO `settings` VALUES (11, \'COOKIE_NAME\', \'\', \'\', \'\', \'\', \'auth\');
INSERT INTO `settings` VALUES (12, \'LANGUAGE_COOKIE_NAME\', \'\', \'\', \'\', \'\', \'auth\');
INSERT INTO `settings` VALUES (16, \'SITE_IS_CLOSED\', \'popup_menu\', \'\', \'Y;N;\', \'Y;N;\', \'main\');
INSERT INTO `settings` VALUES (17, \'USE_MODULE_FOR_THUMBS\', \'popup_menu\', \'\', \'create_thumb;create_thumb_gd\', \'Image::Magick;GD\', \'sizes\');

пытаюсь выцепить запрос CREATE TABLE - он расположен на нескольких строках...делаю так

$query =~m/CREATE TABLE(.*)\\;/s

выборка производится до конца файла...т.е. где последний ; стоит
Название: регулярка
Отправлено: NeoNox от 29 Апреля 2007, 23:41:34
жадность квантификаторов.
одно из решений - .*?
перед употреблением читать perldoc perlre, или(лучше) книгу по регуляркам, она есть в pdf.
Название: регулярка
Отправлено: vladsu от 03 Мая 2007, 17:13:09
$query =~ /CREATE TABLE([^;]*)/;

Хотя может лучше парсером?