Начална » кодиране на стоките » Ръководство за начинаещи за обикновен израз (Regex)

    Ръководство за начинаещи за обикновен израз (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 Граница без думи

    Сега прочетете: Редовни изрази: 30 Полезни инструменти и ресурси