Начать с регулярного выражения

Я всегда боюсь всякий раз, когда вижу какое-либо регулярное выражение. Я думаю, что это очень сложно понять. Но страх - это не решение. Ive решил начать обучение регулярному выражению, так может кто-нибудь посоветует мне, как я могу только начать? И если theres - легкий учебник?

Ответы

Ответ 1

☝ Начало работы с /Regexes/

Регулярные выражения - это форма декларативного программирования. Если вы привыкли к императивному, функциональному или объектно-ориентированному программированию, то это совсем другой способ мышления. Его основанный на правилах подход с утонченными проблемами возврата. Я осмелюсь сказать, что в Prolog на самом деле вам хорошо с этим справиться, что, безусловно, не то, что я обычно советую.

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

Но я предполагаю, что вы arent, исходящие из фона Unix, потому что, если бы вы были, вы бы встретили все регулярные выражения, начиная с самой простой команды grep и заканчивая сопоставлением шаблонов в vi или emacs редактора. Вы можете посмотреть man-страницу grep, набрав

% man grep

на BSD, Linux,  Apple, или Sun - просто чтобы Назовите несколько.

☹ ¡ʇɟoƨoɹɔᴉƜ ʇnoqɐ əɯ ʞƨɐ ʇ ̦uop əƨɐəld ʇƨnɾ ☹


☟ (?: Книга Learnin?)

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

Я говорю "современное", но на самом деле регулярные выражения не были регулярными, так как Кен Томпсон сначала вернул ссылки в его обратную сторону NFA, когда он был знаменит, доказывая эквивалентность NFA-DFA. Поэтому, если вы на самом деле не используете движок DFA, лучше всего просто забыть любую книгу, изучая глупость о регулятивности регулярных выражений. Это просто не распространяется на то, как мы действительно используем их каждый день в реальном мире.

Современные регулярные выражения допускают гораздо больше, чем просто обратные ссылки, хотя, как вы найдете, как только вы углубитесь в них. Theyre их собственный чудесный мир, даже если этот мир немного сюрреалистичен время от времени. Они могут позволить вам заменять страницы и страницы кода только одной строкой. Они также могут заставить вас терять волосы по их безумному поведению. Иногда они заставляют ваш компьютер казаться его висящим, потому что он действительно очень сильно работает в гонке между ним и жарой смерти Вселенной в каком-то ужасном алгоритме O (2), или даже еще хуже. На самом деле это может быть намного хуже. То, что может иметь такая сила в ваших руках. Нет учебного колеса или медленной полосы. Regexes - это инструмент с превосходным качеством.


/☕✷⅋⋙ $⚣ ™ <ª∞¶⌘̤℈⁑‽ # ♬ ˘ $π❧/

⁠ ⁠ ⁠

Еще одна вещь, прежде чем я дам вам большой список полезных ссылок. Поскольку Ive уже сказал сегодня в другом месте, регулярные выражения не обязательно должны быть уродливыми, и им не обязательно быть тяжело. ПОМНИТЕ: Если вы создаете уродливые регулярные выражения, это будет только отражением на вас, а не на них.

Это абсолютное no оправдание для создания регулярных выражений, которые трудно читать. О, theres много, как это там все в порядке, но они не должны быть, и они не должны быть. Несмотря на то, что регулярные выражения (по большей части (форма декларативного программирования, все методы разработки программного обеспечения, которые используются в других формах программирования, по-прежнему применяются здесь!

Регулярное выражение никогда не должно выглядеть как плотная строка пунктуации, которую невозможно расшифровать. Любой язык будет катастрофой, если вы удалите все алфавитные идентификаторы, удалите все пробелы и отступы, удалите все комментарии и удалите все последние следы программирования сверху вниз. Поэтому, конечно, они выглядят как cr @p, если вы это делаете. Не делайте этого!

Таким образом, используйте все эти базовые инструменты, в том числе эстетически приятную структуру кода, тщательную декомпозицию проблем, именованные подпрограммы, развязывание декларации от выполнения (включая упорядочение!), модульное тестирование и все остальное, всякий раз, когда вы создаете регулярные выражения. Все эти критические шаги в делают ваши шаблоны поддерживаемыми.

Одно дело написать /(.)\1/, но совсем другое - написать что-то вроде mǁ☕⅋⚣⁑™∞¶⌘℈‽#♬❧ǁ. Это регулярные выражения из Темных веков: не просто отвергайте их: сжигайте их на костре! Его программирование, в конце концов, не линейный шум или гольф!


☞ Ссылки регекса

Ответ 2

regular-expressions.info - это золотая шахта информации и учебников о регулярных выражениях. От новичка до специалиста там не так много, что лучше, чем этот сайт, когда дело доходит до изучения регулярных выражений.

Ответ 5

Регулярные выражения сами по себе могут не доходить до какой-либо полезности, если только они не объединены с операциями обработки текста с использованием какого-либо скриптового инструмента (sed/awk) или языка программирования, такого как Perl или так. Попробуйте установить Regex Buddy. Хороший автономный инструмент, который может позволить вам использовать регулярные выражения, в некоторых файлах, на которые вы можете указать.

Итак, да, вы можете узнать о какой-то базовой информации, в которой упоминается их структура, синтаксис, семантика, если можно так выразиться, но попробуйте прочитать учебники регулярных выражений в Perl, Vim,... и сделать пример строки/текста манипуляции в этих контекстах, программно

-AD.

Ответ 7

http://www.gskinner.com/RegExr/ существует как онлайн-версия, так и как приложение AIR.

Замечательная вещь об этом приложении (помимо того, что это работает как шарм) заключается в том, что вы можете сохранять свои выражения или делиться ими с сообществом прямо из приложения.

Скажите, что вам нужно регулярное выражение для электронной почты, которое вы можете просто найти по электронной почте, и вы вернете номинальный список выражений.

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

Для части учебника этой статьи очень легко потреблять.

Ответ 8

Эта книга спасла мою задницу, когда я начинал с awk и sed.