Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Некорректная выборка регулярного выражения
 
 автор: RegEditor   (01.11.2010 в 16:09)   письмо автору
 
 

Подскажите, в чем проблема - не могу найти ошибку.
Строка: 1_1|fieldsep|1_2
Рег. выражение: ^.*\|fieldsep2\|.*$
Проблема в том, что это выражение выдает результатом true, хотя после слова fieldsep в регвыражении присутствует еще один символ.

  Ответить  
 
 автор: .....   (01.11.2010 в 16:30)
 
   для: RegEditor   (01.11.2010 в 16:09)
 

выражение - строка в двойных кавычках? (возможная причина)
вавой ЯП (язык программирования) ?

  Ответить  
 
 автор: RegEditor   (01.11.2010 в 17:07)   письмо автору
 
   для: .....   (01.11.2010 в 16:30)
 

при чем тут язык программирования? PHP, но используется MySQL в чистом виде:
select '$reg' regexp '$s'

  Ответить  
 
 автор: .....   (01.11.2010 в 17:51)
 
   для: RegEditor   (01.11.2010 в 17:07)
 

не сразу заметил в каком форуме тема :)

причина та-же самая \| интерпритируется как просто |
? пробуйте \\| , \\\| , и возможно даже \\\\|
// с ходу не соображу как правильнее и чего в $s и применяются-ли где нибудь escape-функции

  Ответить  
 
 автор: RegEditor   (01.11.2010 в 18:08)   письмо автору
 
   для: .....   (01.11.2010 в 17:51)
 

скажу сразу, метод трех слешей сработал, только я так и не понимаю, почему.

мне ведь по идее и нужно просто |, т.е. у меня есть текст такого вида: a|b|c, где | - разделитель. мне нужно произвести поиск такого рода, чтобы b равнялось, например, нулю.
имеем код

select '1|2|3' regexp '^.*\|2\|.*$'

(я, кстати, когда выше писал случайно местами их поменял, изначально-то у меня вариант правильный).
и по идее mysql именно в таком виде и должен получить, \| заменяется на | в выражении - и должен был бы быть желаемый результат. загадка..

В любом случае, большое спасибо за помощь! А если еще объясните, почему двойное экранирование происходит - будет вообще здорово :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования