Домашня » Кодування » Посібник для початківців для регулярних виразів (Regex)

    Посібник для початківців для регулярних виразів (Regex)

    Регулярний вираз - це набір символів, що формують шаблон, який можна шукати в рядку. Regex можна використовувати для перевірка наприклад, для перевірки номерів кредитних карт пошук через складні текстові збіги і для замінити відповідний текст з іншим рядком. Він також має велику підтримку кількох мов - дізнайтеся його один раз, і ви можете використовувати його на багатьох мовах програмування.

    Я бачив, як мало хто бере перший погляд на регулярні виразу, і повністю його ігнорує. Я не звинувачую їх; Синтаксис regex є складним і змусить багатьох критися, як і мови командного рядка, тільки гірше. Але тоді кожна нова річ страшна і здається неможливо навчитися спочатку. Отже, запозичуючи слова Горація, я скажу це; Почніть, будьте сміливими і наважившись бути мудрими.

    Про Regex

    Regex мав свої корені в неврології і математиці і був реалізований тільки в програмуванні в 1968 році Кен Томпсон в текстовому редакторі QED для текстового пошуку. Тепер це частина багатьох мов програмування, таких як Perl, Java, Python, Ruby і JavaScript.

    Давайте подивимося на деякі приклади того, як працює регулярний вираз.

    Я буду використовувати JavaScript у своїх прикладах. Тепер, щоб пройти початковий рівень, потрібно вивчити все символи, класи, квантори, модифікатори і методи використовується в регулярних виразах. Ось посилання на сторінку регулярного вираження Мережі розробників Mozilla, де можна переглянути таблицю, що містить усі ці. Ви також можете звернутися до чіпсета в кінці цієї публікації з найбільш використовуваними символами.

    Подивимося простий приклад з поясненням. Це регулярний вираз.

    Це те, що наведений вище регулярний вираз буде шукати в рядку, символ 'B', за яким принаймні один з будь-якого символу між (і включаючи) 'a' до 'z', 'A' до 'Z' і цифрами 0 9.

    Нижче наведено зразок відповідностей у рядку:

    Кошик, лампа, B12 вітамін, BaSO4, N До н.е. компанії

    Вищевказаний регулярний вираз припинить пошук у Кошик і повернути позитивну відповідь. Це тому глобальний модифікатор "gпотрібно вказати якщо ви хочете, щоб регулярний вираз вивчав всі можливі матчі.

    Тепер давайте подивимося, як використовувати цей вираз у JavaScript. The тест Метод виходить: якщо знайдений матч повернення вірно, інше помилковий.

     var input = "ваша тестова рядок", regex = / B [a-zA-Z d] + /; if (! regex.test (вхід)) попередження ("Не знайдено відповідності"); else alert ("Знайдено відповідність");

    Спробуємо інший метод: матч повертає збіги, знайдені в масиві.

     var input = "ваш тестовий рядок", regex = / B [a-zA-Z d] + / g, / * Я додав глобальний модифікатор 'g' до регулярного виразу, щоб отримати всі збіги * / ary = input.match (regex); if (ary === null) попередження ("Не знайдено відповідності"); else alert ('збіги:' + ary.toString ());

    Як про рядок замінити? Давайте спробуємо це з regex зараз.

     var input = "ваша тестова рядок", regex = / B [a-zA-Z d] + / g; alert (input.replace (регулярний вираз, "#"));

    Нижче наведено кодовий код для налаштування. Натисніть вкладку "JavaScript", щоб переглянути код JS.

    Вправи

    Для вправ можна Google “виконання вправ” і спробуйте вирішити їх. Ось що можна очікувати при спробах цих вправ, відповідно до рівнів складності.

    Основний

    Мені це вдається перевірити пароль достатньо для початку. Отже, перевірте пароль на довжину від 8 до 16 символів, дозволений алфавітно-цифровий вибір спеціальних символів.

    Проміжний

    Тут треба тренуватися з більш реальними даними і дізнатися ще кілька точок регулярного виразу Подивимося вгору, дивимося за свої твердження і відповідні групи;

    • Перевірити PIN-коди, шістнадцяткові коди, дати, ідентифікатор електронної пошти, плаваючу крапку.
    • Замініть кінцевий нуль, пробіли, набір відповідних слів
    • Витягніть різні частини URL-адреси

    Додатково

    Ви можете оптимізувати рішення вищевказаних вправ - найоптимальніший регулярний вираз для електронної пошти - це тисячі символів візьміть його настільки, наскільки вам комфортно, і цього достатньо. Можна також спробувати:

    • Розбір HTML або XML (хоча в реальному світі це не рекомендується робити, тому що використання регулярних виразів для розбору нерегулярних мов, таких як HTML, ніколи не зробить його надійним.
    • Заміна тегів
    • Видалення коментарів (за винятком умовних коментарів IE)

    Інструменти

    Інструменти для візуалізувати регулярний вираз є одним з найхолодніших речей там для мене. Якщо ви коли-небудь стикалися з довгим складним регулярним виразом, просто скопіюйте їх у один з цих інструментів, і ви зможете переглядати потік. Крім того, існує безліч інструментів, які можна використовувати для того, щоб возитися з кодом регулярних виразів. Вони також демонструють приклади та чіпсити разом із функціями спільного використання.

    • Debuggex - він малює діаграму регулярних виразів відповідно до ваших вхідних даних, і ви можете швидко зробити спільний доступ до StackOverflow прямо звідти.
    • RegExr - Ви можете перевірити свій регулярний вираз з цим. Він також отримав посилання, чіпсет і приклади, щоб допомогти вам.
    • 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] Характер між (включаючи) від A до Z
    . Будь-який окремий символ
    s Будь-який пробіл
    S Будь-який символ без пробілів
    d Будь-яка цифра від 0 до 9
    D Будь-яка незначна
    w Будь-який символ слова (буква, номер і підкреслення)
    W Будь-який несимвольний символ
    (…) Захоплення все укладене
    (a | b) Відповідає або a або b
    a? Характер а або відсутній, або присутній один раз
    a * Характер а або відсутній, або присутній більше разів
    a+ Характер a присутній один або кілька разів
    a 3 3 послідовності характеру
    a 3, 3 або більше подій символу послідовно
    a 3,6 3 до 6 виступів символу послідовно
    ^ Початок рядка
    $ Кінець рядка
    b Межа слова. Якщо символ - символ останнього або першого слова, або Якщо символ знаходиться між словом або немовним символом
    B Границя без слова

    Тепер читайте: регулярні вирази: 30 Корисні інструменти та ресурси