Регулярні вирази для SEO

  1. Що таке регулярні вирази
  2. Основи регулярних виразів
  3. «^» - карет, циркумфлекс або просто галочка. початок рядка
  4. «$» - знак долара. кінець рядка
  5. "." - крапка. будь-який символ
  6. «*» - знак множення, зірочка. Будь-яке число попередніх символів.
  7. «+» - плюсик. Будь-яке позитивне число попередніх символів.
  8. "?" - знак питання. Необов'язкова зустрічальність останнього символу
  9. "( )" - круглі дужки. Угруповання конструкцій.
  10. «|» - вертикальна лінія. Оператор «АБО».
  11. "[ ]" - квадратні дужки. Будь-який з перелічених символів.
  12. "{ }" - фігурні дужки. Повторення символу кілька разів.
  13. «\» - зворотний слеш. Екранування службових символів.
  14. Ще кілька прикладів

Регулярні вирази є потужним інструментом в арсеналі seo-шника. Деякі фахівці, мимоволі стикаються з регулярними виразами в .htaccess або Google Analytics, бояться цього незрозумілого мови, але як тільки починають розбиратися, добирають смаку і усвідомлюють, як ці конструкції полегшують життя і стають потужним інструментом для роботи з текстовими даними. У цій статті простою мовою описані основи регулярних виразів і наведені приклади їх використання в SEO та аналітиці. Матеріал буде корисний всім, хто так чи інакше пов'язаний з обробкою даних в SEO.

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

Регулярний вираз (по англ. Regular Expression або просто RegExp) це певна конструкція для пошуку входжень (чого б то не було) в текстовому рядку. За допомогою цього формального мови можна виокремлювати з тексту, наприклад, телефони, email-адреси, будь-які шматки тексту і так далі. Часто RegExp використовують програмісти при перевірці даних, що вводяться або при написанні парсеров, але SEO-фахівця також доводиться стикатися з регулярки при роботі з Google Analytics, Яндекс.Метрика, RewriteRule в .htaccess або навіть в текстових редакторах для швидкого пошуку і заміни рядків.

Основи регулярних виразів

Розглянемо популярний приклад використання регулярних виразів для настройки редиректу на сайті з версії "без www" на www-домен.

RewriteCond% {HTTP_HOST}! ^ Www \. (. *) [NC] RewriteRule ^ (. *) $ Http: //www.%1/$1 [R = 301, L]

Регулярні вирази тут виділені жирним. Що означають ці точки і інші знаки? Виглядає дуже заплутано. І щоб розібратися з цим, потрібно розуміти синтаксис RegExp.

«^» - карет, циркумфлекс або просто галочка. початок рядка

Цей символ використовується для позначення початку рядка (якщо не використовується всередині конструкції «[]»). Наприклад, якщо ви хочете знайти всі ключові слова, що починаються на слово «купити», конструкція буде виглядати просто: ^ купити. Без цього знака будуть знайдені всі ключові слова, які містять слово «купити», не обов'язково на початку.

Наприклад, ви можете використовувати це в розширених фільтрах Google Analytics.

Наприклад, ви можете використовувати це в розширених фільтрах Google Analytics

Ви можете заперечити: навіщо використовувати регулярки, там де можна обійтися без них? У фільтрах Google Analytics є пункт «починається з». Я абсолютно згоден, і цей приклад навів лише для пояснення синтаксису, далі ми побачимо, що комбінація різних конструкцій вирішує завдання, які складно вирішити без використання регулярних виразів.

«$» - знак долара. кінець рядка

На відміну від галочки, долар позначає кінець рядка. Вже зрозуміло, що конструкція москва $ знайде всі фрази, які закінчуються на слово «москва».

"." - крапка. будь-який символ

Точка позначає будь-який символ, але тільки один. Сама по собі точка використовується і зустрічається рідко, частіше разом з іншими конструкціями, наприклад, «. *».

«*» - знак множення, зірочка. Будь-яке число попередніх символів.

Зірочка позначає будь-яке число символів (або групи символів), які записані перед цим знаком, в тому числі і відсутність цього символу.

Разом з попереднім символом «точка» виходить зручна конструкція «. *», Що означає будь-яку кількість будь-яких символів. Наприклад, вираз

RewriteRule ^ (. *) $ Http: //www.%1/$1 [R = 301, L]

Вже стає більш зрозумілим, тут відбувається редирект будь-який з сторінок на новий URL.

Припустимо, в звітах по сторінках я хочу знайти дані для сторінок з розділу seo-компаній , Де залишали коментарі, щоб проаналізувати поведінку цих користувачів. Дані сторінки у мене виглядають приблизно так:

/ Companies / seo-studio? Commented = 1

Тут змінюється лише середня частина, а початок і кінець залишаються однаковими. Тому, знаючи вже перераховані елементи, можна скласти регулярний вираз і використовувати його в фільтрі:

^ / Companies /.* commented = 1 $

Отримаємо наступний звіт:

Ще один корисний приклад використання цієї конструкції - закриття панелі управління WordPress в .htaccess, відкриття її тільки для вашого IP-адреси:

<FilesMatch ". *"> Order Deny, Allow Deny from All Allow from 200.20.21.145 </ FilesMatch>

Де 200.20.21.145 це, наприклад, ваш IP адреса .

«+» - плюсик. Будь-яке позитивне число попередніх символів.

Від попереднього знака «*» плюсик відрізняється тим, що символ обов'язково повинен зустрітися хоча б один раз.

"?" - знак питання. Необов'язкова зустрічальність останнього символу

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

^ / Articles /? $

Або наприклад, коли ви шукайте ключові слова і враховуєте певні помилки:

купити лест? ніцу

Цей вираз знайде всі ключові слова вашої аудиторії, де зустрічалися фрази «купити сходи» і «купити лесницу».

"( )" - круглі дужки. Угруповання конструкцій.

Аналогічно застосування в математиці, круглі дужки в регулярних виразах використовуються для угруповання. І вже для групи символів або правил можна вказувати інші правила. Крім цього, знайдені відповідності в дужках повертаються в окремі змінні $ 1, $ 2 і т.д., в залежності від порядкового номера групи.

Наприклад, нам потрібно перенаправити всіх користувачів з папки «domain.com/blog/» на піддомен blog.domain.com :

RewriteRule ^ blog /(.*)$ http://blog.domain.com/$1 [R = 301, L]

Тут правило ^ blog /(.*)$ означає, що адреса починається з blog /, далі може йти якась послідовність символів (наприклад, адреса якоїсь статті в блозі). Всю цю послідовність ми об'єднуємо в дужки і далі використовуємо змінну $ 1, щоб зробити посторінковий редирект на піддомен.

«|» - вертикальна лінія. Оператор «АБО».

Вертикальна лінія позначає оператор АБО, коли нам потрібно перерахувати в пошуку певні варіанти. Припустимо, ми шукаємо ключові слова, де зустрічається слово «купити» або «куплю»:

купити | куплю

Або ж хочемо подивитися статистику за кількома розділами - статтями (/ articles /) і прес-релізів (/ pr /):

^ / (Articles | pr) /

Або візьмемо інший приклад. Припустимо, ми хочемо закрити від індексації пошуковими системами розділи admin, login, register і деякі інші. Щоб не лізти в код сайту, можна зробити це кількома рядками коду в .htaccess, використовуючи HTTP -заголовок X-Robots-Tag, який розуміють більшість пошукових систем.

<FilesMatch "^ / (admin | staff | login | register). * $"> Header set X-Robots-Tag "noindex, nofollow" </ FilesMatch>

"[ ]" - квадратні дужки. Будь-який з перелічених символів.

У квадратних дужках можна перерахувати символи і один з них може зустрічатися в шуканому тексті. Якщо перший символ в цій конструкції - «^» (шапочка / галочка), то масив працює навпаки - символ не повинен збігатися з тим, що перераховані в дужках. Щоб не перераховувати деякі популярні послідовності, наприклад, весь алфавіт або ряд цифр, можна використовувати діапазон: 0-9 означає діапазон від 0 до 9, ac - діапазон символів від «a» до «з».

Припустимо, мені цікаво, як люди знаходили мій сайт, коли шукали явні інструкції (статті починаються на «10 кращих ...» або «15 самих ...»).

^ [0-9] +

Тут я побачу, що багато хто запитував 301 редирект, але це не те, що я шукав, тому, в розширеному фільтрі я виключу все, що містить 301.

Тут я побачу, що багато хто запитував 301 редирект, але це не те, що я шукав, тому, в розширеному фільтрі я виключу все, що містить 301

І побачу такі питання, на які можна відповісти в одній зі статей, якщо її ще не було на блозі.

І побачу такі питання, на які можна відповісти в одній зі статей, якщо її ще не було на блозі

Всього знайдено 140 варіантів, серед яких є дуже цікаві, на кшталт «100 топ сайтів копірайтингу» або « 5 завдань на співбесіді в яндекс »🙂 Зробимо це посиланням.

"{ }" - фігурні дужки. Повторення символу кілька разів.

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

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

14 [0-9] {4}

Тут ми вказали 14, а далі послідовність чисел, що повторюється 4 рази, разом загальна довжина буде 6. Більш складний приклад:

www \ .domain \. [az] {2,6}

Чи знайде всі доменні зони, основного домену, включаючи www.domain.ru і www.domain.travel.

Ще більш складний приклад - нам потрібна статистика по 2, 3 і 4-Словник окремо. Для цього в Google Analytics в звіті за ключовими словами використовуємо фільтр:

^ [^ \ S] + (\ s [^ \ s] +) {2} $

Конструкція «s» означає пробіл (space), саме їм поділяються слова. Тут [^ s] + вказує, що фраза повинна починатися з будь-якої кількості непробелов, далі йде пропуск і ще раз якесь слово. Останні два правила «пробіл + слово» можуть зустрічатися саме 2 рази (конструкція «() {2}»). Так ми отримуємо список всіх трехсловніков і статистику по ним.

«\» - зворотний слеш. Екранування службових символів.

У синтаксисі регулярних виразів використовуються точки, знаки питання та інші, які також можуть бути цікаві для пошуку. У цьому випадку допомагає символ зворотного слеша. Наприклад, для пошуку точки, ми екрануючи її - «\.», Те ж саме з іншими символами.

Наприклад, в Google Analytics у мене налаштована одна з цілей - використання внутрішнього пошуку. Людина використовує пошук, якщо я бачу в URL конструкцію «/? Q =». У мене в налаштуваннях це виглядає так: «/ \? Q \ =".

Q \ =

Як ви помітили, в деяких прикладах вище я також використовував знак екранування.

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

Ще кілька прикладів

- Пошук записів з посиланнями.

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

SELECT * FROM `posts` WHERE` content` RLIKE 'https?: // ([а-яa-z0-9-] +.) + [Az] {2,7}'

- Заміна всіх абсолютних посилань в БД при переїзді сайту на інший домен

UPDATE `articles` SET` content` = REPLACE ( `content`, 'old-domain.crimea.ua', 'new-domain.ru') WHERE` content` RLIKE 'old-domain.com'

- Редірект в .htaccess з HTML -версії сайту на PHP

RedirectMatch /(.*)\.html$ /$1.php

- Редірект зі сторінки /index.php на кореневу «/» для позбавлення від дублів

RewriteCond% {THE_REQUEST} ^ [AZ] {3,9} /index.php HTTP / RewriteRule ^ index.php $ http://site.com.ua/ [R = 301, L]

- Наявність UTM -мітки в URL

(?:? | &) Utm = ([^ & $] +)

- Додавання сегмента в Google Analytics для відстеження органічного трафіку

(Клікніть для збільшення зображення)
(Клікніть для збільшення зображення)

- Виняток офісного трафіку з статистики Google Analytics

- Виняток офісного трафіку з статистики Google Analytics

- Блокування доступу до сканування сайту роботами Ahrefs і Open Site Explorer.

RewriteEngine On RewriteCond% {HTTP_USER_AGENT} ^ rogerbot [OR] RewriteCond% {HTTP_USER_AGENT} ^ AhrefsBot RewriteRule. * - [F]

Вище наведені достатньо не складні, але часто використовувані приклади, і тут зовсім порушена Яндекс.Метрика, де також можна використовувати регулярні вирази. Для тестування своїх конструкцій і тренувань з RegExp можна використовувати зручний сервіс http://www.rubular.com , а тут можна завантажити і роздрукувати хорошу пам'ятку за регулярними виразами, якщо ви вирішили до них підійти більш серйозно.

Якщо у вас є інші цікаві приклади використання регулярних виразів для SEO і аналітики, діліться ними в коментарях.

Що означають ці точки і інші знаки?
Ви можете заперечити: навіщо використовувати регулярки, там де можна обійтися без них?
Людина використовує пошук, якщо я бачу в URL конструкцію «/?