Руководство по использованию RegEx в SEO

RegEx

RegEx (регулярные выражения) не так сложны, как кажется на первый взгляд. То, что выглядит, как неоднородный и несистематизированный беспорядок из случайных символов, в действительности оказывается довольно простым. Для того, чтобы использовать хотя бы некоторые основные RegEx в вашей повседневной работе, нужно всего лишь потратить немного времени на чтение.

К примеру, вы можете использовать поле фильтра в нижней части вашего Google Analytics, где отображаются отчеты по основным запросам, чтобы найти ключевые слова, содержащиеся в наименовании вашего бренда, такие, как «дистиллированная». Если вы хотите найти оба написания как с большой буквы, так и с маленькой, вы можете использовать RegEx [Дд]истиллированная. Довольно просто, не так ли?

Хотя, постойте… некоторые из вас могут спросить, что за ерунда эти RegEx? Замечательный вопрос. RegEx являются одним из средств поиска соответствующих подстрок (в основном, во фрагментах текста). Вы создаете выражение, которое представляет собой сочетание символов и метасимволов, и введенные вами сочетания будет сравниваться с подстроками.

Таким образом, в примере ключевого слова, приведенном выше, RegEx применяется к каждому ключевому слову, и если находится соответствие, оно включается в отчет. Если нет, слово исключается.

RegEx имеют множество применений помимо Google Analytics, к примеру, таких, как проверка формы или правила вывода URL. Надеюсь, что этот пост даст вам понимание основ и подарит некоторые идеи для того, где вы могли бы использовать RegEx.

Символы и Метасимволы

RegEx состоят из символов и метасимволов. Под символом имеется в виду любые буквы, цифры, символы, знаки препинания или пробелы. В RegEx их смысл буквальный — буква А соответствует букве А, номер 32 соответствует 32, и «дистиллированный» соответствует «дистиллированный» (но не «Дистиллированная» — символы в RegEx чувствительны к изменениям условий ввода).

Метасимволы, однако, не рассматриваются в подобном буквальном смысле. Ниже будет объяснение каждого метасимвола, используемых в RegEx, и их специальные значения.

Если вы хотите тестировать их по ходу рассказа, откройте Google Analytics и используйте поле фильтра в нижней части ваших отчетов. Также вы можете использовать RegExpal.com ^(http://RegExpal.com/).

Точка

Точка соответствует любому символу. То есть, любой одной букве, цифре, символу или пробелу. Например, RegEx «.ить» соответствует подстроке «бить», «пить», «лить», «3ить» и «!ить» и еще многим другим вариантам. Стоит отметить, что «ить» без . не будет соответствовать запросам, проведенным с ней.

Обратная косая черта

Время от времени вы станете обнаруживать, что символ, к которому вы хотите подобрать соответствие, — это метасимвол. Например, если вы хотите, чтобы IP-адрес соответствовал, например, 172.16.254.1, вы обнаружите, что ваши RegEx соответствуют не только 172.16.254.1, но и любой комбинации типа 1721161254,1, потому как точки могут представлять любой символ.

Вы хотите, чтобы метасимвол понимался буквально, перед ним стоит поставить обратную косую черту. В приведенном выше примере Вы должны использовать 172 0,16 0,254 .1

Вопросительный знак часто встречается в динамических URL, таких как /category.php?catid= 23. Если вы пытаетесь отслеживать эту страницу как часть последовательности перехода, у вас могут возникнуть проблемы, так как знаки вопроса, как мы увидим позже, это метасимволы. Решение для этого достаточно простое: /category.php?catid= 23

Квадратные скобки []

Квадратные скобки могут использоваться для определения набора символов – любой из символов в скобках может участвовать в поиске соответствия. Мы видели их в примере, который использовался во введении — [Дд]истиллированная – и эти скобки используются для того, чтобы соответствовать как «дистиллированная», так и «Дистиллированная».

Вы можете также использовать диапазон, определяемый дефисом. [0-9], к примеру, соответствует любому одноразрядному числу, а [a-z] соответствует любой строчной букве латинского алфавита. Также можно комбинировать диапазоны, и такие диапазоны, как [A-Fa-f] будут соответствовать любой букве между «a» и «f», строчной или прописной. Диапазоны часто сочетаются с повторениями, которых мы коснемся далее.

В частности, в наборах символов вы можете использовать ^ для исключения соответствий. Например, [^ 0-9] соответствует всему, кроме символов в данном диапазоне.

Повторение? + * {}

Вопросительный знак, а также символ плюса, звездочка, и фигурные скобки – все это позволяет указать, сколько раз предыдущий символ или метасимвол должен возникнуть в запросе.

Вопросительный знак используется для обозначения того, что либо нулевой, либо одной из предыдущих символов должны иметь совпадения. Это означает, что такие выражения, как abc? будут соответствовать как ab и abc, но не abcd или abcc и т.д.

Символ плюса показывает, что один или более из предыдущих символов принимаются для поиска соответствий. Например, abc+ будет соответствовать abc, abcc, и все комбинации типа abccccccc. Но соответствия не получилось бы в случае с ab, так как символ должен присутствовать в любом случае.

Звездочка – это объединение двух символов. Она соответствует нулю, одному или более предшествующих символов. Например, abc* соответствует ab, abc, abcc, и все что угодно сверх того типа abccccccc.

Наконец, фигурные скобочки могут быть использованы для определения конкретного числа или диапазона повторений. [0-9]{2} будет соответствовать 2 любым одноразрядным числам, а [a-z]{4,6} будет соответствовать любому сочетанию строчных букв на расстоянии от 4 до 6 символов.

Группировка () |

Скобки позволяют группировать символы вместе. Я могу, например, захотеть отфильтровать ключевые слова для поиска, содержащего мое имя, и я хочу, результаты фильтровались не только для комбинации «роб миллард», но и для комбинации «роберт миллард». Я мог бы сделать это с помощью роб(ерт)?миллард — вопросительный знак и скобки означают, что либо нулевой набор символов, либо с «ерт» могут найти соответствие.

Кроме того, вы можете использовать |…| (знак «труба») для представления OR. Вы можете использовать это для чего-то вроде (SEO|seo|s.e.o.|S.E.O.)moz, чтобы отслеживать SEOmoz, seomoz, s.e.o.moz, и S.E.O.moz, хотя, версии с точками и кажутся маловероятным.

Труба также может быть использована без скобок, если вам не нужно группировать символы. Например, iphone|ipad может быть использована для фильтрации количества переходов на ваш сайт по ключевым словам, содержащим одну из комбинаций.

Якоря ^ $

Хоть мы уже и смотрели на каретку в сочетании с квадратными скобками, они также могут быть использованы для того, чтобы показать, что подстрока должна начинаться со следующих символов. Например, если вы пытаетесь найти все URL-адреса в пределах определенной директории вашего сайта, вы можете использовать ^products/.

Это будет соответствовать таким ссылкам, как products/item1 и products/item2/description, без включения результатов для таких URL, которые не начинаются с этой подстроки (например, support/products/).

Знак доллара означает, что строка должна заканчиваться именно этими символами. И снова вы можете использовать его для отслеживания определенных URL, таких, как /checkout$, после чего результаты будут widgets/cart/checkout и gadgets/cart/checkout, но не checkout/help.

Некоторые сокращения

Есть несколько трюков, которые помогут вам сэкономить время.

d — соответствие любому одноразрядному числу, т.е. так же, как [0-9]

w — соответствие любой букве (прописной и заглавной), цифре или подчеркиванию, т.е. [A-Za-z0-9_]

s — соответствие любому пустому месту, которое содержит пробелы, табуляции и переводы строк.

Ох! Довольно много того, что стоит отметить и принять во внимание. Я бы рекомендовал поэкспериментировать с короткими примерами, приведенными выше, чтобы действительно почувствовать их. И как только вы почувствуете себя комфортно в управлении основами, вы можете приступить к серьезному использованию.

Google Analytics

Фильтры могут быть использованы для исключения внутреннего трафика из отчетов, и в сочетании с некоторыми простыми RegEx можно также отфильтровать диапазон IP-адресов. В «Настройках Профиля» создайте новый пользовательский фильтр, который исключает поле фильтра IP-адреса посетителя. Использование выражений, как 55.0,65.0,132.0,2[678] будет исключать IP-адреса 55.65.132.26, 55.65.132.27 и 55.65.132.28.

Google Analytics может значительно расширить свой функционал вследствие использования RegEx, он оснащен еще одной особенностью – «Расширенными сегментами». Одним из наиболее распространенных видов использования данной функции, является создание сегмента не фирменного поискового трафика, чтобы получить ясную картину ваших усилий по SEO, отображаемых вне зависимости от какой-либо фирмы или бренда. Создать сегмент, где средний точно соответствует основному поиску, и создать запрос, в котором ключевое слово не соответствует RegEx. Вы должны включить в запрос RegEx, как пример во введении [Дд]истилированная, или [Рр]оберт [Мм]иллард.

Вы также можете использовать «Расширенный сегменты» для создания социального сегмента СМИ — выбрать источник и выставить условие о совпадении с RegEx. Ваше значение должно быть чем-то вроде facebook|twitter|youtube|digg и т.д.

Я уже касался поля фильтра в нижней части каждого отчета ранее – и это, наверное, то самое место, где я наиболее часто используют RegEx, так как это может оказать огромную помощь при исследовании конкретных проблем и запросов. Используйте «трубу», например, в отчете о ключевых словах, чтобы найти ключевые слова, содержащие несколько синонимов, или сделайте что-то похоже на сегменте СМИ, перечислив несколько сайтов в докладе об источниках трафика.

Наконец, RegEx могут быть полезны при настройке перехода со страниц и тех переходов, которые вы хотите оснастить большим количеством, чем один URL в качестве цели или шага (последовательности). При создании новой цели с URL назначения, используйте тип соответствия RegEx. Вы, возможно, пожелаете использовать такие выражения, как, например, ^/(widgets|gadgets)/checkout/thanks.php$, чтобы отслеживать и /widgets/checkout/thanks.php и /gadgets/checkout/thanks.php. При настройке тоннеля переходов, все ссылки рассматриваются как RegEx, что позволяет использовать ту же технику.

Есть более продвинутые примеры, представленных выше в несколько замечательных блогах и ресурсах о RegEx и Google Analytics, которых слишком много, чтобы перечислять здесь, но я бы рекомендовал поиск и чтение некоторых из них.

Правило вывода URL-адресов

Я думаю, что большинство из вас знакомы с SEO и дружественными нам URL-адресами. Они должны быть статичными, а не динамичным, и должны быть понятными. Зачастую это достигается с помощью вывода URL адресов, который реализуется на серверах Apache с помощью встроенного модуля, который называется mod_rewrite. Текстовый файл с именем .htaccess находится в корне домена, который содержит правила mod_rewrite. Простой вывод выглядит примерно так:

RewriteEngine On

RewriteRule ^category/link-building/?$ category.php?cat=link-building [NC]

Этот пример будет означать, что URL www.example.com/category/link-building/ действительно может служить страницей www.example.com/category.php?cat=link-building. Как вы помните, знак вставки и знак доллара означают, что адрес должен начинаться и заканчиваться с link-building/, а вопросительный знак означает, что слэш не является обязательным. [NC] – это не RegEx, это часть синтаксиса mod_rewrite, который просто заявляет, что RewriteRule нечувствителен к регистру.

Очевидно, что этот подход не очень эффективен для крупных сайтов с тысячами URL, и это как раз тот случай, когда RegEx становятся незаменимыми, так как позволяет вам видеть образцы соответствий. Правило вывода динамических адресов с использованием RegEx может выглядеть следующим образом:

RewriteEngine On

RewriteRule ^category/([A-Za-z0-9-]+)/?$ category.php?cat=$1 [NC]

Это правило утверждает, что URL должен начинаться с category/ и затем может следовать любое сочетание букв, цифр и символа до тех пор, пока не стоит один или больше знаков (+). Эта часть правила окружена скобками, чтобы она могла делать ссылку во второй части правила с помощью $1. Если следующими символами идут скобки, то вместо единицы может стоять $2 и так далее. Опять же, слэш не является обязательным потому как есть вопросительный знак, а также знак вставки и знак доллара используются для определения начала и конца URL.

Это лишь один простой пример, среди множества прочих возможностей. Если вы хотите узнать больше, я рекомендую рассматривать это руководство как отличную шпаргалку.

Word — да

Это то, с чем я только вступил в борьбу, но включение таких шаблонов в Word, как «Найти и Заменить» могут сохранить огромное количество времени при чистке и прочих манипуляциях с данными. Мне кажется, что я часто проделываю такие вещи, к примеру, при создании отчетов и подготовке данных для инфографики.

Пример того, как вы могли бы использовать это: можно удалить ID сессии из списка URL-адресов. Вы можете ввести sid=[0-9]+ в окне «Найти» и оставьте пустым поле «Заменить».

Что же касается mod_rewrite, вы можете также ссылаться на ваше поле поиска, хотя синтаксис в этом случае немного отличается. Вместо $1 и $2 вы используете 1 и 2. Если у вас есть список URL-адресов, и вы хотели бы поменять местами подкаталоги, вы можете использовать example.com/([a-z-]+)/([a-z-]+)/$ в поле поиска и использовать example.com/2/1/ в поле замены.

Конечно же, есть много иных применений для RegEx, особенно в области программирования, но я надеюсь, что даже эта статья дает вам некоторое представление о потенциале RegEx в области SEO.

© An SEO’s Guide to RegEx ^(http://moz.com/blog/an-seos-guide-to-regex)

ГлавнаяSEO → Руководство по использованию RegEx в SEO