Приклади регулярних виразів: як новачкові розібратися в регулярки - Netpeak Blog

  1. Що таке регулярні вирази
  2. Синтаксис регулярних виразів
  3. П'ять способів протестувати свої знання про регулярні вирази
  4. 1. Вивчаємо регулярні вирази в текстовому редакторі
  5. 2. Перевіряємо знання регулярних виразів в Regex
  6. 3. Тестуємо регулярні вирази за допомогою Jsfiddle
  7. 4. Перевіряємо помилки в регулярних виразах за допомогою Google Analytics
  8. 5. Нестандартні методи освоєння регулярних виразів
  9. Жадібні і ледачі квантори
  10. Де використовувати регулярні вирази
  11. Що ще почитати про регулярні вирази

Раніше з регулярних виразів я використовував тільки (. *) :) Кілька друзів настійно радили мені розібратися в цьому питанні. Але не розуміючи, де їх можна застосовувати, я відкладав це до кращих часів.

Все змінилося, коли мені довелося більш щільно працювати з Google Analytics і Google Tag Manager в Netpeak.

Без розуміння регулярних виразів складно уявити собі нормальну настройку фільтрів, призначених для користувача сегментів в GA або правил в GTM.

Давайте розберемося, з чого варто почати вивчення регулярних виразів новачкові.

Що таке регулярні вирази

Регулярні вирази (regular expressions, RegExp) - набори символів, що застосовуються для пошуку текстових рядків, відповідних необхідним умовам. Результат застосування регулярного виразу - підмножина даних, відібране згідно з логікою, закладеної в вираженні. Регулярні вирази застосовуються в будь-яких завданнях з пошуку в множині даних, для яких потрібно отримувати вижимки за певними правилами.

Синтаксис регулярних виразів

Більшість символів в регулярних виразах представляють самі себе, за винятком групи спеціальних символів «[] \ / ^ $. | ? * + () {} ». Якщо ці символи потрібно представити в якості символів тексту, їх слід екранувати зворотною косою межею «\».

Якщо ці спецсимволи зустрічаються без зворотної косої межі, значить у них особливі значення в регулярних виразах:

  • «^» - каретка, циркумфлекс або просто галочка. Початок рядка;
  • «$» - знак долара. Кінець рядка;
  • "." - крапка. Будь-який символ;
  • «*» - знак множення, зірочка. Будь-яка кількість попередніх символів;
  • «+» - плюс. 1 або більше попередніх символів;
  • "?" - знак питання. 0 або 1 попередніх символів;
  • "( )" - круглі дужки. Угруповання конструкцій;
  • «|» - вертикальна лінія. Оператор «АБО»;
  • "[ ]" - квадратні дужки. Будь-який з перелічених символів, діапазон. Якщо перший символ в цій конструкції - «^», то масив працює навпаки - перевіряється символ не повинен збігатися з тим, що перераховано в дужках;
  • "{ }" - фігурні дужки. Повторення символу кілька разів;
  • «\» - зворотний слеш. Екранування службових символів.

Також існують спеціальні метасимволи, ними можна замінити деякі готові конструкції:

  • \ B - позначає не символ, а кордон між символами;
  • \ D - цифровий символ;
  • \ D - нецифровий символ;
  • \ S - символ пробілу;
  • \ S - непробельний символ;
  • \ W - буквений або цифровий символ або знак підкреслення;
  • \ W - будь-який символ, крім літерного або цифрового символу або знака підкреслення.

П'ять способів протестувати свої знання про регулярні вирази

При вивченні регулярних виразів дуже важлива практика. Чим більше практикуєшся, тим швидше починаєш будувати потрібні конструкції і вирішувати поставлені завдання.

1. Вивчаємо регулярні вирази в текстовому редакторі

Майже всім новачкам я відразу рекомендую ставити текстовий редактор NotePad ++ і починати тренуватися в ньому. Чому саме в цьому текстовому редакторі:

  • в більшості випадків спецсимволи не потрібно екранувати;
  • Notepad ++ зберігає конструкції попередніх запитів;
  • функція «Позначки» наочно показує результат пошуку по заданій конструкції і дозволяє швидко внести правки:

в більшості випадків спецсимволи не потрібно екранувати;   Notepad ++ зберігає конструкції попередніх запитів;   функція «Позначки» наочно показує результат пошуку по заданій конструкції і дозволяє швидко внести правки:

2. Перевіряємо знання регулярних виразів в Regex

Онлайн-сервіс regex101.com дозволяє ввести набір даних і регулярний вираз. Після цього в наборі даних підсвітяться рядки, відповідні висловом. У спеціальному вікні Explanation регулярний вираз розбирається по частинах:

Давайте потренуємося: завдання - підсвітити всю рядок повністю. Потрібно поставити галочку навпроти «multi line».

Тестові дані:

https://www.site.ua/ www.site.com/search?q=widget+thinger http://www.site.com/page1/page2/page3/ http://www.site.com/index .php https://www.site.com/products/100.php http://www.site.us/products/101.php http://www.site.com/products/102.php http: / /www.site.ua/duals/index.html http://www.site.com/ourteam/index.php https://www.site.com/ http://site.com/profile http: // www.site.ru/ua/index.php http://www.site.com/ua/producty/100.php http://www.site.com/ua/producty/101.php https: // www .site.com / ua / producty / 102.php http://1.site.com/search?q=widget http://www.site.com/search?q=widget+thinger https: // www. site.com/search?q=smidges http://www.site.com/index/yy.jpg

Регулярні вирази для перевірки знань:

  • вибрати всі сторінки;
    • (. *) - будь-яка кількість будь-яких символів;
  • вибрати всі сторінки з https;
    • ^ Https. * - всі URL, що починаються з https;
  • всі сторінки українською мовою;
    • . * / Ua /.* - всі сторінки, в URL яких міститься / ua /. Якщо використовувати просто ua, до вибірки потрапить http://www.site.com/duals/index.html, це зайве;
  • всі індексні сторінки;
    • . * Index \. (Php | html) - аналогічно минулому висловом, не можна просто використовувати index;
  • всі картки товарів (для російської і української версій);
    • . * Product (s | y). * Або. * Product [sy]. * - обидва варіанти підходять.

3. Тестуємо регулярні вирази за допомогою Jsfiddle

Jsfiddle - інструмент для експериментів з JavaScript. У ньому можна перевірити умови для запуску функції або демонстрації потрібних результатів.

В цьому прикладі видно, як на підставі регулярних виразів спочатку визначається, чи є натиснутий елемент посиланням на файл .pdf або .jpg. Після цього для елементів, які не є посиланнями на файли, визначаються назва і ціна товару. Все це з'ясовується, виходячи з текстового вмісту елементів.

4. Перевіряємо помилки в регулярних виразах за допомогою Google Analytics

Найшвидший спосіб перевірити знання про регулярні вирази в Google Analytics - фільтри в стандартних звітах. Зайдіть в свій аккаунт і в будь-якому звіті, де доступні фільтри, спробуйте відібрати будь-якої набір даних.

5. Нестандартні методи освоєння регулярних виразів

Для тих, хто любить інтерактив:

Жадібні і ледачі квантори

квантори в регулярних виразах дозволяють визначити частину шаблону, яка повинна повторюватися кілька разів поспіль. «Жодний» квантор намагається захопити найбільший шматок тексту, який тільки може. А «лінива» версія (додається символ-модифікатор «?») Шукає найменшу з можливих входжень.

Жадібний квантор (*) захоплює все - від перших лапок до останніх:

Жадібний квантор (*) захоплює все - від перших лапок до останніх:

Лінива версія квантора (*?) Шукає найменшу збіг, тому знайде кожну подстроку окремо:

) Шукає найменшу збіг, тому знайде кожну подстроку окремо:

Де використовувати регулярні вирази

SEO-фахівці вдаються до регулярних виразах при роботі з Google Analytics, Яндекс.Метрика, RewriteRule в .htaccess, в текстових редакторах, при роботі з краулер (Netpeak Spider).

Розповім про декілька регулярних виразів, які часто мені допомагають.

1. Виділити все, крім домену:

. *: // | /.*

Використовую, коли є великий список URL-адрес (наприклад, зовнішніх посилань) і для аналізу потрібно виокремити тільки домен. У NotePad ++ за допомогою функції заміни міняю на порожній рядок і отримую чистий список доменів:

2. Виділити URL заданої вкладеності:

. *: //Site.com/.*? /.*? /.*? /

Тут конструкція (/.*?/) позначає один рівень вкладеності.

Використовую цей вислів, коли потрібно задати максимально дозволену вкладеність URL при скануванні сайту в Netpeak Spider .

Щоб просканувати всі URL адреси тільки першого рівня вкладеності, в сервісі потрібно задати такі параметри:

Що ще почитати про регулярні вирази

висновки

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

Його досить складно освоїти, ще складніше навчитися правильно застосовувати. Натомість цей інструмент істотно полегшить вашу роботу і зробить її набагато ефективніше.

Накидаємо улюблених регулярних виразів в коментарях?

Com/search?
Com/search?
Com/search?
Com/search?
Додається символ-модифікатор «?
Накидаємо улюблених регулярних виразів в коментарях?