Ръководство за начинаещи за обикновен израз (Regex)
Редовният израз е набор от символи, формиращи шаблон, който може да се търси в низ. Regex може да се използва за утвърждаване например за потвърждаване на номера на кредитни карти, за Търсене чрез сложни текстови съвпадения и за замяна на съответстващия текст с друг низ. Той също така има многократна езикова поддръжка - научете го веднъж и можете да го използвате в много езици за програмиране.
Виждал съм няколко души, които се вглеждат първо в regex, и го пренебрегват напълно. Не ги обвинявам; Синтаксисът на regex е сложен и ще накара много да се свият точно като тези на езиците на командния ред, само по-лошо. Но тогава всяко ново нещо е страшно и първоначално изглежда невъзможно да се научи. Така че, заемайки думите на Хораций, ще кажа това; Започнете, бъдете смели и рискувайте да бъдете мъдри.
За Regex
Regex има своите корени в неврологията и математиката и се прилага само в програмирането през 1968 г. от Ken Thompson в QED текстов редактор за текстово търсене. Сега е част от много програмни езици като Perl, Java, Python, Ruby и JavaScript.
Нека да разгледаме няколко примера за това как работи regex.
Ще използвам JavaScript в моите примери. Сега, за да преминете първоначално ниво, трябва да научите всичко символи, класове, квантори, модификатори и методи използва се в regex. Ето линк към страницата за редовно изражение на мрежата на разработчиците на Mozilla, където можете да видите таблица, съдържаща всички тези. Можете също така да се обърнете към измамната таблица в края на тази публикация с най-използваните знаци.
Нека видим един прост пример с обяснение. Това е regex.
Ето какво ще търси горният regex в ред, символ 'B', последван от поне един от всеки знак между (и включително) 'a' до 'z', 'A' до 'Z' и числата от 0 до 9.
Ето примерна съвпадение в маркиран ред:
кошница, крушка, B12 витамин, BaSO4, N пр.н.е. търговско дружество
Горното изречение ще спре търсенето в кошница и да се върне положителен отговор. Това е защото глобалния модификатор "г
трябва да се посочи ако искате регулярните думи да разгледат всички възможни съвпадения.
Сега да видим как да използваме този израз в JavaScript. Най- тест
Методът отива: ако се намери връщане на мач вярно
, още фалшив
.
var input = "вашият тестов низ", regex = / B [a-zA-Z d] + /; if (! regex.test (input)) alert ("Няма намерени съвпадения"); else alert („Намерено е съвпадение“);
Да опитаме друг метод: мач
връща съвпаденията, намерени в масив.
var input = "вашият тестов низ", regex = / B [a-zA-Z d] + / g, / * Добавих глобалния модификатор 'g' към регекс, за да получим всички съответствия * / ary = input.match (регулярен); if (ary === null) сигнал ("Няма съвпадение е намерен"); else alert ('съвпадения са:' + ary.toString ());
Какво ще кажете за низ замени
? Да опитаме с regex сега.
var input = "вашият тестов низ", regex = / B [a-zA-Z d] + / g; сигнал (input.replace (regex, "#"));
По-долу е кодовата кутия, която можете да промените. Кликнете върху раздела „JavaScript“, за да видите JS кода.
Упражнения
За упражнения, можете да Google “упражнения” и опитайте да ги решите. Ето какво можете да очаквате, когато се опитват тези упражнения, според нивата на трудност.
Основен
За мен е в състояние да валидиране на парола е достатъчно за начало. Така че, потвърдете парола с дължина от 8 до 16 знака, буквено-цифрова с разрешен избор на специални знаци.
Междинен
Това е мястото, където трябва да практикувате с повече данни от реалния свят и да научите още няколко регекс точки като погледни напред, погледни задните твърдения и съвпадащи групи;
- Проверка на ПИН кодовете, шестнадесетични цифри, дати, имейл адрес, плаваща запетая.
- Заменете крайните нули, белите пространства, съвпадащите думи
- Извличане на различни части от URL адрес
напреднал
Можете да оптимизирате решенията от горните упражнения - най-оптималният регрекс за имейл има хиляди символи в него - така вземете го доколкото се чувствате удобно и това е достатъчно. Можете също да опитате:
- Анализиране на HTML или XML (макар и в реалния свят да не се препоръчва това да става, тъй като използването на регулярни изрази за разбор на нередовен език като HTML никога няма да го направи безпроблемна.
- Замяна на маркери
- Премахване на коментари (с изключение на условните коментари на IE)
Инструменти
Инструменти за визуализирате regex са едно от най-готините неща за мен. Ако някога срещнете дълъг комплексен regex, просто ги копирайте в един от тези инструменти и ще можете ясно да видите потока. Освен това, има много инструменти, които можете да използвате, за да свирите с регекс кода. Те също демонстрират примери и маски, заедно с функции за споделяне.
- Debuggex - Той изготвя диаграма на регулярните изчисления според вашия вход и можете да направите бърз дял от StackOverflow от там.
- RegExr - Можете да тествате вашите regex с този. Той също така има позоваване, cheatsheet и примери, за да ви помогне.
- Refiddle - В момента, с изключение на JavaScript, можете да свирите с Ruby и .NET версии на regex в него.
Regex Cheatsheet
жетон | дефиниция |
[ABC] | Всяка единична буква a, b или c |
[^ ABC] | Всеки символ, различен от a, b или c |
[A-Z] | Символ между (включително) от a до z |
[^ A-Z] | Символ с изключение на a до z |
[A-Z] | Символ между (включително) от А до Z |
. | Всеки един символ |
\с | Всеки символ за празно пространство |
\С | Всеки символ без пробел |
\д | Всяка цифра от 0 до 9 |
\Д | Всяка без цифра |
\ w | Всеки символ на дума (буква, цифра и долна черта) |
\ W | Всеки символ без думи |
(…) | Уловете всичко затворено |
(А | б) | Съвпадение на a или b |
а? | Характерът "а" или липсва, или присъства еднократно |
а * | Характерът a липсва или присъства повече пъти |
а+ | Характерът a присъства един или повече пъти |
на 3 | 3 последователности от характер |
а 3 | 3 или повече последователности от характер |
а 3,6 | 3 до 6 последователности от характер |
^ | Начало на низ |
$ | Край на низ |
\ б | Дума граница. Ако даден символ е символ на последната или първата дума на дума или Ако знак е между дума или несловен символ |
\ B | Граница без думи |