imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 26.05.2005, 16:35     # 1
apoc
Junior Member
 
Аватар для apoc
 
Регистрация: 17.08.2003
Адрес: Украина
Сообщения: 150

apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)
Регулярные выражения

Нужно сделать такую конструкцию чтобы отсеивать только чётные или нечетные повторения... например...
Строка:
"Hello World!!!"

удалить "!" - если их количество подряд стоячих не четное...

Результат:
"Hello World"
__________________
His name is spelled A-P-O-C, with a C - not APOK, because it originates from the word 'apocalypse'...
apoc вне форума  
Старый 26.05.2005, 16:42     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
Сообщение от apoc
отсеивать только чётные или нечетные повторения
А по-русски?

Если я правильно догадался: /\!(\!\!)+/ (снесёт 3,5,7 и т.д.)
RaZEr вне форума  
Старый 26.05.2005, 16:56     # 3
apoc
Junior Member
 
Аватар для apoc
 
Регистрация: 17.08.2003
Адрес: Украина
Сообщения: 150

apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)
Правильно только не совсем я правильно высказался... в общем есть вот такое:

vasya = 'lena'
zina = 'petya'
veronika = 'oleg valer\'ovich'

это все текст, нужно заменить такое вот \' на какой нить символ скажем chr(1)....
но вся проблема в том что может быть такой вариант:

vasya = 'lena'
zina = 'petya'
veronika = 'oleg valer\'ovich\\'

когда выражение типа \\' заменится на \ и символ chr(1) поэтому надо менять только когда нечетное количество...
__________________
His name is spelled A-P-O-C, with a C - not APOK, because it originates from the word 'apocalypse'...
apoc вне форума  
Старый 26.05.2005, 17:02     # 4
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
ну так: /[^\\]\\\'/ . и зачем вообще такое нужно?...
RaZEr вне форума  
Старый 26.05.2005, 17:24     # 5
apoc
Junior Member
 
Аватар для apoc
 
Регистрация: 17.08.2003
Адрес: Украина
Сообщения: 150

apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)
Ладно... вообщем не то... ну да ладно, завтра на свежую голову что то придумаю. Да парсер это для импорта SQL запросов в базу. Работал-работал, а тут попался такой вот запросик, и загнулся.
Спасибо, буду дальше думать.
__________________
His name is spelled A-P-O-C, with a C - not APOK, because it originates from the word 'apocalypse'...
apoc вне форума  
Старый 26.05.2005, 23:05     # 6
Al-x
Junior Member
 
Регистрация: 30.03.2003
Адрес: СПб
Сообщения: 162

Al-x МолодецAl-x МолодецAl-x Молодец
на чём пишешь?
Просто если на PHP, то там есть функция mysql_real_escape_string - она это и делает.
__________________
640Kbytes should be enough for everything! (c) Bill Gates, 1981.
Все "спасибо" в репутацию
Al-x вне форума  
Старый 30.05.2005, 10:25     # 7
apoc
Junior Member
 
Аватар для apoc
 
Регистрация: 17.08.2003
Адрес: Украина
Сообщения: 150

apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)
Есть файл с запросами и надо их выполнять по очереди, (дамп короче)...
Надо определять начало и конец каждого запроса.
Не совсем тут mysql_real_escape_string поможет )))
__________________
His name is spelled A-P-O-C, with a C - not APOK, because it originates from the word 'apocalypse'...
apoc вне форума  
Старый 30.05.2005, 15:39     # 8
_ARMAGEDDON_
Guest
 
Сообщения: n/a

запросы ведь друг от друга каким-то символом отделяются? или в одну строчку идут сплошным текстом?
explode не поможет?
 
Старый 30.05.2005, 15:41     # 9
apoc
Junior Member
 
Аватар для apoc
 
Регистрация: 17.08.2003
Адрес: Украина
Сообщения: 150

apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)
отделяются )))) точкой с запятой
но в тексте тоже такие имеются )))
было бы очень легко, если б так
__________________
His name is spelled A-P-O-C, with a C - not APOK, because it originates from the word 'apocalypse'...
apoc вне форума  
Старый 31.05.2005, 14:12     # 10
_ARMAGEDDON_
Guest
 
Сообщения: n/a

отделяй другими символами... которые в тексте не встречаются
например - :#$%;
или chr()

четные нечетные повторения тебе не помогут
 
Старый 31.05.2005, 14:24     # 11
apoc
Junior Member
 
Аватар для apoc
 
Регистрация: 17.08.2003
Адрес: Украина
Сообщения: 150

apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)apoc Реально крут(а)
уже так и сделал... забыл сказать...

1) $query = str_replace(array("\r","\\'"),array("",chr(1)),$query);
(заменил все "интересные последовательности")

2) preg_match_all("/'[^']*'/",$query,$query_array);
(выбрал все поля)

3) $change_from = ";\n";
$change_to = chr(30);
foreach($query_array[0] as $query_line)
{
$position = strpos($query_line,$change_from);
if ($position > 0)
{
$query = str_replace($query_line,str_replace($change_from,$change_to,$query_lin e),$query);
}
}
(заменил все переносы строк в полях на символ 30 если встретился)

4) $query = str_replace(chr(1),"\\'",$query);
$query_array = explode($change_from,$query);
(Вернул текст с запросами к нормальному виду... а именно восстановил "интересные последовательности". А затем превратил в массив запросов весь текст.)

5) $query = str_replace($change_to,$change_from,$query);
(При выполнении запроса, вернул в значение полей символ ";")

Собственно говоря, наверное есть и более простые решения, а может и более сложные, но на данном этапе, мне этого достаточно, будем считать, что я нашел решение. Можно и не продолжать )) если конечно у кого то не найдется более элегантное решение данной проблемы.

Спасибо всем, особенно модераторам
__________________
His name is spelled A-P-O-C, with a C - not APOK, because it originates from the word 'apocalypse'...
apoc вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:33.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.