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
Форумы портала PHP.SU :: Версия для печати :: Какая разница между запросами на регулярках
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Какая разница между запросами на регулярках

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

1. lawer85 - 04 Июня, 2016 - 18:29:17 - перейти к сообщению
Есть 2 запросами с использованием регулярок. Не пойму почему результаты разные

CODE (SQL):
скопировать код в буфер обмена
  1. mysql> SELECT "aXbc" REGEXP "^[a-dXYZ]$";       -> 0
  2. mysql> SELECT "aXbc" REGEXP "^[a-dXYZ]+$";      -> 1
2. IllusionMH - 04 Июня, 2016 - 19:14:29 - перейти к сообщению
lawer85, ну на первый взгляд разница в наличии +. Прочтите значения ^ $ и + http://php.net/manual/en/regexp....ference.meta.php
3. lawer85 - 04 Июня, 2016 - 19:27:00 - перейти к сообщению
IllusionMH пишет:
lawer85, ну на первый взгляд разница в наличии +. Прочтите значения ^ $ и + http://php.net/manual/en/regexp.reference.meta.php


Значение этих символов я знаю, однако это мне не помогло разобраться в разнице результатов этих запросов, можете подробнее для особо одаренных рассказать в чем соль.
4. OrmaJever - 04 Июня, 2016 - 21:58:47 - перейти к сообщению
в первом случае ищет ОДИН символ a,b,c,d,X,Y или Z, во вором любое количество больше одного. Поэтому в первом не находит т.к. от начала до конца стоки там 4 таких символа.
5. lawer85 - 05 Июня, 2016 - 10:44:36 - перейти к сообщению
OrmaJever пишет:
в первом случае ищет ОДИН символ a,b,c,d,X,Y или Z, во вором любое количество больше одного. Поэтому в первом не находит т.к. от начала до конца стоки там 4 таких символа.


Спасибо большое!
6. lawer85 - 08 Июня, 2016 - 21:44:06 - перейти к сообщению
Хотел вот еще что спросить по той же теме.

Вот есть такой шаблон поиска [[.characters.]] чем он отличается от допустим (characters)?
7. lawer85 - 09 Июня, 2016 - 14:19:07 - перейти к сообщению
Сам вроде допетрил. Я так понимаю (characters) тут ищеться наличие одного и более символов из списка в скобках, а [[.characters.]] ищет весь набор символов как одно целое. Поправьте если не прав.
8. OrmaJever - 09 Июня, 2016 - 14:25:51 - перейти к сообщению
наоборот в квадратных скобках каждый символ сам за себя (либо диапазонами a-z), а в круглых слова целиком
[qwerty] - будет искать в строке любой из перечисленых символов (q,w,e,r,t,y)
(qwerty) - будет искать слово qwerty целиком
в кварратных скобках есть диапазоны [a-z0-9] - буквы от a до z и числа от 0 до 9, а в груглых есть "или" (qwerty|word) будет искать либо слово qwerty либо word
9. Мелкий - 09 Июня, 2016 - 14:37:21 - перейти к сообщению
Неправы. Диаметрально неправы.
(characters) - группа с запоминанием. Может быть любым регулярным выражением. Ищется всё совпадение. В конкретном примере - точное вхождение подстроки "characters"

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

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

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

Поэтому я и сделал вывод что ищется запись целиком

 

Powered by ExBB FM 1.0 RC1