Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Какая разница между запросами на регулярках

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
lawer85
Отправлено: 04 Июня, 2016 - 18:29:17
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Есть 2 запросами с использованием регулярок. Не пойму почему результаты разные

CODE (SQL):
скопировать код в буфер обмена
  1. mysql> SELECT "aXbc" REGEXP "^[a-dXYZ]$";       -> 0
  2. mysql> SELECT "aXbc" REGEXP "^[a-dXYZ]+$";      -> 1
 
 Top
IllusionMH
Отправлено: 04 Июня, 2016 - 19:14:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




lawer85, ну на первый взгляд разница в наличии +. Прочтите значения ^ $ и + http://php.net/manual/en/regexp....ference.meta.php
 
 Top
lawer85
Отправлено: 04 Июня, 2016 - 19:27:00
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




IllusionMH пишет:
lawer85, ну на первый взгляд разница в наличии +. Прочтите значения ^ $ и + http://php.net/manual/en/regexp.reference.meta.php


Значение этих символов я знаю, однако это мне не помогло разобраться в разнице результатов этих запросов, можете подробнее для особо одаренных рассказать в чем соль.
 
 Top
OrmaJever
Отправлено: 04 Июня, 2016 - 21:58:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




в первом случае ищет ОДИН символ a,b,c,d,X,Y или Z, во вором любое количество больше одного. Поэтому в первом не находит т.к. от начала до конца стоки там 4 таких символа.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
lawer85
Отправлено: 05 Июня, 2016 - 10:44:36
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




OrmaJever пишет:
в первом случае ищет ОДИН символ a,b,c,d,X,Y или Z, во вором любое количество больше одного. Поэтому в первом не находит т.к. от начала до конца стоки там 4 таких символа.


Спасибо большое!
 
 Top
lawer85
Отправлено: 08 Июня, 2016 - 21:44:06
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Хотел вот еще что спросить по той же теме.

Вот есть такой шаблон поиска [[.characters.]] чем он отличается от допустим (characters)?
 
 Top
lawer85
Отправлено: 09 Июня, 2016 - 14:19:07
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Сам вроде допетрил. Я так понимаю (characters) тут ищеться наличие одного и более символов из списка в скобках, а [[.characters.]] ищет весь набор символов как одно целое. Поправьте если не прав.
 
 Top
OrmaJever
Отправлено: 09 Июня, 2016 - 14:25:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




наоборот в квадратных скобках каждый символ сам за себя (либо диапазонами a-z), а в круглых слова целиком
[qwerty] - будет искать в строке любой из перечисленых символов (q,w,e,r,t,y)
(qwerty) - будет искать слово qwerty целиком
в кварратных скобках есть диапазоны [a-z0-9] - буквы от a до z и числа от 0 до 9, а в груглых есть "или" (qwerty|word) будет искать либо слово qwerty либо word


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Мелкий Супермодератор
Отправлено: 09 Июня, 2016 - 14:37:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Неправы. Диаметрально неправы.
(characters) - группа с запоминанием. Может быть любым регулярным выражением. Ищется всё совпадение. В конкретном примере - точное вхождение подстроки "characters"

[[.characters.]] - не припоминаю ни в PCRE ни в POSIX.
Зато, глядя на название раздела, припоминаю такое вот тут: http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]7/en/regexp[dot]html Алиасы некоторых символов. '[[.tilde.][.low-line.]]' эквивалентно выражению '[~_]', обычная символьная маска, совпадает с любым символом из набора.


-----
PostgreSQL DBA
 
 Top
lawer85
Отправлено: 09 Июня, 2016 - 15:13:12
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Да согласен напутал.

на счет записи [[.characters.]] читал тут http://www[dot]mysql[dot]ru/docs/man/Regexp[dot]html

Там же сказано что если последовательность сравнения включает в себя элемент сравнения ch, то регулярное выражение [[.ch.]]*c устанавливает соответствие с первыми пятью символами выражения chchcc.

Поэтому я и сделал вывод что ищется запись целиком
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB