МИСКЛ регуларни изрази (РЕГЕКСП) са синтаксом & амп; Примери

Anonim

Шта су регуларни изрази?

Регуларни изрази помажу у претраживању података који одговарају сложеним критеријумима. Заменице смо погледали у претходном водичу. Ако сте раније радили са џокер знаковима, можда се питате зашто учити регуларне изразе када можете да добијете сличне резултате помоћу џокер знакова. Јер, у поређењу са џокер знаковима, регуларни изрази нам омогућавају претрагу података који се подударају са још сложенијим критеријумом.

Основна синтакса

Основна синтакса за регуларни израз је следећа

SELECT statements… WHERE fieldname REGEXP 'pattern';

ОВДЕ -

  • „СЕЛЕЦТ наредбе ...“ је стандардни СЕЛЕЦТ израз
  • „ГДЕ име поља“ је назив колоне на којој ће се извршити регуларни израз.
  • „РЕГЕКСП 'образац'" РЕГЕКСП је оператор регуларног израза, а 'образац' представља образац који ће РЕГЕКСП упарити. РЛИКЕ је синоним за РЕГЕКСП и постиже исте резултате као и РЕГЕКСП. Да га не бисте помешали са оператором ЛИКЕ, боље је да користите РЕГЕКСП .

Погледајмо сада практични пример -

SELECT * FROM `movies` WHERE `title` REGEXP 'code';

Горњи упит претражује све наслове филмова који садрже реч. Није важно да ли је „код“ на почетку, средини или на крају наслова. Све док је садржан у наслову, тада ће се разматрати.

Претпоставимо да желимо да тражимо филмове који почињу са а, б, ц или д, а затим било који број других знакова, како бисмо то постигли. Регуларни израз можемо користити заједно са метазнаковима да бисмо постигли жељене резултате.

SELECT * FROM `movies` WHERE `title` REGEXP '^[abcd]';

Извршавање горње скрипте у МиСКЛ радном окружењу против мифликдб даје нам следеће резултате.

 
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6

Погледајмо сада изблиза наш регуларни израз одговоран за горњи резултат.

'[абцд]' знак (^) значи да подударање узорка треба применити на почетку, а цхарлист [абцд] значи да се у нашем резултату враћају само наслови филмова који почињу са а, б, ц или д.

Изменимо нашу горњу скрипту и употребимо листу с ознакама НОТ и видећемо које ћемо резултате добити након извршавања нашег упита.

SELECT * FROM `movies` WHERE `title` REGEXP '^[^abcd]';

Извршавање горње скрипте у МиСКЛ радном окружењу против мифликдб даје нам следеће резултате.

 
movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
3 X-Men 2008
9 Honey mooners John Schultz 2005 8
16 67% Guilty 2012
17 The Great Dictator Chalie Chaplie 1920 7
18 sample movie Anonymous 8
19 movie 3 John Brown 1920 8

Погледајмо сада изблиза наш регуларни израз одговоран за горе наведене резултате.

'[абцд]' знак (^) значи да подударање узорка треба применити на почетку, а цхарлист [абцд] значи да су наслови филмова који почињу било којим од приложених знакова изузети из резултата.

Метазнакови регуларног израза

Оно што смо гледали у горњем примеру је најједноставнији облик регуларног израза. Погледајмо сада напреднија подударања узорака регуларних израза. Претпоставимо да желимо да претражујемо наслове филмова који почињу шаблоном „код“ само користећи регуларни израз, како бисмо то учинили? Одговор су метазнакови. Омогућавају нам прецизно подешавање резултата претраживања образаца помоћу регуларних израза.

Цхар Опис Пример
* Ознака звездица (*) користи се за подударање са нулом (0) или више инстанци низова који јој претходе ОДАБЕРИТЕ * ИЗ филмова ГДЕ наслов РЕГЕКСП 'да *'; ће дати свим филмовима који садрже ликове „да“. На пример, Да Винчијев код, Дадди'с Литтле Гирлс.
+ Плус (+) метацхарацтер се користи да одговара један или више примера низова је претходних. СЕЛЕЦТ * ФРОМ `мовиес` ВХЕРЕ` титле` РЕГЕКСП 'мон +'; ће свим филмовима који садрже ликове дати „мон“ .На пример, Ангелс анд Демонс.
? Метакарактер питања (?) Користи се за подударање са нулом (0) или једним примером низова који му претходе. СЕЛЕЦТ * ФРОМ `цатегориес` ВХЕРЕ` име_категорије` РЕГЕКСП 'цом?'; даће све категорије које садрже низ цом .На пример, комедија, романтична комедија.
. Тачка (.) Метацхарацтер се користи да одговара било који карактер у изузетком нове линије. ОДАБЕРИТЕ * ИЗ филмова ГДЕ `година_издање` РЕГЕКСП '200.'; ће дати све филмове објављене у годинама које почињу са знаковима "200", а затим било којим појединачним знаком. На пример, 2005,2007,2008 итд.
[абц] Листа цхар [абц] користи се за подударање са било којим од приложених знакова. СЕЛЕЦТ * ФРОМ `мовиес` ВХЕРЕ` титле` РЕГЕКСП '[ввкиз]'; ће дати све филмове који садрже било који појединачни лик у „ввкиз“. На пример, Кс-Мен, Да Винцијев код итд.
[абц] Листа цхар [абц] користи се за подударање са било којим знаковима, осим оних који су приложени. СЕЛЕЦТ * ФРОМ `мовиес` ВХЕРЕ` титле` РЕГЕКСП '[ввкиз]'; ће дати све филмове који садрже ликове осим оних у „ввкиз“.
[АЗ] [Аризона] се користи за поклапање свих горњи слова. СЕЛЕЦТ * ФРОМ `мемберс` ВХЕРЕ` постал_аддресс` РЕГЕКСП '[АЗ]'; ће дати свим члановима који имају поштанску адресу која садржи било који знак од А до Ж ... На пример, Јанет Јонес са чланским бројем 1.
[аз] [Аз] се користи за поклапање свих малим словима СЕЛЕЦТ * ФРОМ `мемберс` ВХЕРЕ` постал_аддресс` РЕГЕКСП '[аз]'; ће дати свим члановима који имају поштанске адресе које садрже било који знак од а до з ... На пример, Јанет Јонес са чланским бројем 1.
[0-9] [0-9] се користи за поклапање свих цифра од 0 до 9. СЕЛЕЦТ * ФРОМ `мемберс` ВХЕРЕ` цонтацт_нумбер` РЕГЕКСП '[0-9]' ће дати свим члановима који су предали бројеве за контакт који садрже знакове „[0-9]“ .На пример, Роберт Пхил.
^ Знак за уметање (^) се користи за покретање меч на почетак. СЕЛЕЦТ * ФРОМ `мовиес` ВХЕРЕ` титле` РЕГЕКСП '[цд]'; даје све филмове са насловом који започиње са било којим од ликова у "цд-у". На пример, кодно име Блацк, Дадди'с Литтле Гирлс и Да Винци Цоде.
|. | Вертикална трака (|) се користи за изолацију алтернатива. СЕЛЕЦТ * ФРОМ `мовиес` ВХЕРЕ` титле` РЕГЕКСП '[цд] | [у]'; даје све филмове са насловом који почиње са било којим од ликова у "цд" или "у" .На пример, кодно име Блацк, Дадди'с Литтле Гирл, Да Винцијев код и Ундерворлд - Авакенинг.
[[: <:]] [[: <:]] Одговара почетку речи. СЕЛЕЦТ * ФРОМ `мовиес` ВХЕРЕ` титле` РЕГЕКСП '[[: <:]] фор'; даје све филмове са насловима који почињу са ликовима. На пример: Заборав на Сару Маршал.
[[:>:]] [[:>:]] Одговара крају речи. СЕЛЕЦТ * ФРОМ `мовиес` ВХЕРЕ` титле` РЕГЕКСП 'ацк [[:>:]]'; даје све филмове са насловима који се завршавају знаковима „ацк“ .На пример, кодно име црно.
[:класа:] [: Класа:] одговара класу карактера, односно [: алпха:] на мача писма, [: простор:] да одговара бели простор, [: Пунцт:] је меч знакове интерпункције и [: горња:] за горње слова класе. СЕЛЕЦТ * ФРОМ `мовиес` ВХЕРЕ` титле` РЕГЕКСП '[: алпха:]'; даје да сви филмови са насловима садрже само слова. На пример, овај заборав ће изоставити филм попут Пиратес оф тхе Цариббеан 4 (заборављени Сарах Марсхал, Кс-Мен) итд.

Коса црта (\) се користи као излазни знак. Ако га желимо користити као део узорка у регуларном изразу, требало би да користимо двоструке косе црте (\\)

Резиме

  • Регуларни изрази пружају моћно и флексибилно подударање шаблона које нам могу помоћи да имплементирамо услужне програме за претраживач снаге за наше системе база података.
  • РЕГЕКСП је оператор који се користи приликом извођења подударања са регуларним изразима. РЛИКЕ је синоним
  • Регуларни изрази подржавају бројне мета карактере који омогућавају већу флексибилност и контролу приликом извођења подударања шаблона.
  • Коса црта се користи као излазни знак у регуларним изразима. У подударању обрасца узима се у обзир само ако су коришћене двоструке косе црте.
  • Регуларни изрази не разликују велика и мала слова.