Обязательно ли каждому программисту изучать регулярные выражения? [закрыто]

82

Я новичок в программировании, и на собеседовании у меня возник вопрос о регулярных выражениях; Само собой разумеется, я не мог ответить. Поэтому мне было интересно, должен ли я изучать регулярные выражения? Это необходимо для каждого программиста во всех областях? Или это необходимо для программирования для некоторых конкретных областей?

Смежные вопросы:

пользователей
источник
55
Я лично знаю, что они, когда их использовать и как Google синтаксис. пожимает плечами
Тианна
35
Это необходимо для всех опытных пользователей. И программисты должны быть опытными пользователями, чтобы быть продуктивными.
SK-logic
8
Почему ты не хочешь учить их? Вы уже сталкивались по крайней мере с одной ситуацией, когда вам было бы полезно знать их. Разве не понятно, что вы можете оказаться в подобной ситуации в будущем?
FishBasketGordo
23
Только те, которые работают с текстом :)
Стив Джексон

Ответы:

113

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

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

ptyx
источник
4
Я согласен, это хороший вопрос для любого опытного разработчика. Но просить нового выпускника, не имеющего опыта работы с ними, возможно, немного несправедливо - если только он действительно не хочет отфильтровать кандидатов без практического опыта программирования вообще.
SK-logic
2
@ SK-логика: зависит от школы. У всех нас был обязательный курс на 2-м курсе, в котором довольно интенсивно использовались регулярные выражения (я признаю, что там я их и зацепил;)). И больше, чем несколько курсов для старших, снова подняли их, хотя и не так интенсивно.
FrustratedWithFormsDesigner
Согласился с комментариями выше - я не ожидал бы, что кто-то только что из школы обязательно узнает регулярные выражения. Но я все еще могу спросить.
ptyx
13
Я математик, поэтому у меня нет никаких формальных знаний в области компьютерных наук, но я бы подумал, что регулярные выражения на самом деле преподаются на курсах колледжа, в то же время обсуждая грамматику, парсеры, автоматы и еще много чего. Я действительно ожидал, что кто-то только что из колледжа будет лучше, чем опытный программист, не изучающий CS. : - /
Андреа
8
@ Андреа, когда я учился в университете (бакалавр компьютерных наук), регулярные выражения действительно учитывались при изучении грамматики и автоматов. Однако охватывалось только формальное понятие, а не приложения. Мы не изучили POSIX или Perl-совместимый синтаксис регулярных выражений или то, как использовать их в нашем коде. Мы узнали, как нарисовать диаграмму состояний автомата конечных состояний, написать это как регулярное выражение и т. Д. Были задействованы греческие буквы, а не grep и текстовые файлы.
Адам Яскевич
54

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

eykanal
источник
19
Это так же верно, как сказать, что понимание логической логики полезно, но не обязательно.
Одед
1
@Oded: я не нашел никакого смысла для булевой логики, которой обучают в моем курсе.
DeadMG
16
@DeadMG, я все время использую логическую логику, например, в преобразованиях: if (!(foo && bar))=> if (!foo || !bar). Возможно, вы использовали его и не поняли, или, может быть, вас не научили правильному материалу.
zzzzBov
7
Понравился контроль версий? Или тестирование программного обеспечения?
Конрад Рудольф
2
@ruakh - я согласен, что они чрезвычайно полезны; Я использую их все время. Я думаю, что все программисты должны научиться использовать регулярные выражения в какой-то момент своей карьеры. Вопрос, однако, не задавал этого.
эйканал
33

Я не удивлюсь, если, например, программист игр или программист на LHC никогда не научится регулярным выражениям. Я мог бы даже дать программисту игры пропуск, не зная SQL.

Но если вы работаете в каких-либо информационных системах и не знаете регулярных выражений, вы оказываете себе медвежью услугу.

С другой стороны, я не ожидал бы, что ваш стандартный программист IS будет знать математику, как программист игр. Есть разные дисциплины программиста, однако мы должны попасть под зонтик «информационных систем».

Джонатан Рич
источник
1
Программисты на LHC могут использовать регулярные выражения для поиска в файлах данных, созданных датчиками. Программисты игр могут использовать регулярные выражения для поиска файлов журналов, создаваемых их играми. Хорошо, что они не могли бы иметь , но это, вероятно , может сделать такие задачи намного проще.
FrustratedWithFormsDesigner
1
Я согласен, но если бы я брал интервью на должность программиста игр, я бы все равно нанял кого-нибудь, если бы он не знал, что такое регулярное выражение. Если бы я нанимал кого-то в роли традиционного бизнес-программиста, который не знал, что такое регулярные выражения, его бы, наверное, не наняли.
Джонатан Рич
Это справедливо, я думаю.
FrustratedWithFormsDesigner
7
Физики элементарных частиц в основном работают в юниксоподобных средах, но, как и все, что связано с компьютером в этом сообществе, большинство навыков передается устными традициями. Уровни сложности в регулярных выражениях варьируются. Но мы не ищем данные с помощью регулярных выражений: их слишком много, и они не в текстовых форматах. Мы ищем журналы и специальные базы данных, а также код и недоделанную документацию, как и все остальные.
dmckee
1
@FrustratedWithFormsDesigner, я бы не стал нанимать программиста игр, который не знал регулярных выражений. Программирование по своей природе является информационно-интенсивным независимо от области . Не имеет значения, что вы делаете - в любой дисциплине у вас есть исходный код, текстовые редакторы с поддержкой регулярных выражений и файлы журналов. Без регулярных выражений вы будете значительно менее эффективны в выполнении определенных задач (даже если вам не нужно писать ни одной строки регулярного выражения в поставляемой игре). Я не говорю, что регулярное выражение необходимо для программиста игр. Я просто говорю, что не найму того, кто этого не знал.
Бен Ли
22

Регулярные выражения - очень краткий способ выразить, как сопоставлять шаблоны в тексте.

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

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

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

Вы можете начать с учебного пособия по регулярному выражению .

Одед
источник
2
Это для меня дело вкуса. Я никогда не нуждался в них. Я использовал их в нескольких проектах, так что я знаю, как они работают, но я мог бы легко обойтись без них и увидеть, что они злоупотребляли чаще, чем я чувствовал в них необходимость. Чтобы упростить шаблон, вы также можете использовать сложную манипуляцию и быстрее использовать (e) BNF, по крайней мере, если вы, как я, привыкли работать с парсерами
Rune FS
15

В отличие от большинства ответов здесь, я не думаю, что знание навыков является обязательным навыком для продуктивного программиста. Когда я беру интервью у кандидатов на должность, я буду копать глубже, если они чувствуют себя обязанными привнести свои навыки самореализации. Почему? они часто используются в местах, потому что им нравится правильный молоток, но часто вам нужна была отвертка. Ищите так по HTML и регулярному выражению, и вы увидите довольно много вопросов и довольно много причин, почему регулярное выражение не подходит.

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

Конечно, иногда они удобны, но за более чем 20-летний опыт работы в качестве профессионального разработчика я думаю, что использовал их в коде менее 20 раз (и даже написал несколько сценариев на Perl). Я использую их регулярно для поиска и поиска. заменить хотя.

Руна ФС
источник
Программисты, которые не знают регулярных выражений, часто создают большую кучу WTF, когда регулярное выражение будет работать очень хорошо. Программисты, которые знают ТОЛЬКО регулярные выражения, часто создают меньшую, но в целом некорректную кучу WTF, пытаясь обрабатывать нерегулярные языки (например, HTML) с помощью регулярных выражений.
Кевин Клайн
14

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

Это то, о чем говорится в главе 3 «Прагматического программиста», когда простой текст является «основным сырьем для программирования».

JohnTESlade
источник
Почему бы вам просто не использовать ide, поддерживающее рефакторинг?
NimChimpsky
2
Если бы я задал вопрос в этом посте, я бы поставил вам галочку. Это единственная самая важная причина, по которой я бы никогда не нанял человека, который не знал регулярных выражений. Это мощный инструмент для редактирования кода и поиска по журналу , даже если вам никогда не нужно писать ни одной строки кода, которая его использует. Кто-то, кто не знает, будет на несколько порядков менее эффективным при выполнении определенных ежедневных задач.
Бен Ли
10

Джефф Этвуд написал отличный блог о регулярных выражениях, в нем есть эта удивительная цитата:

Some people, when confronted with a problem, think "I know, I'll use regular 
expressions." Now they have two problems. [Jamie Zawinski]

Существует также отличный ответ на хороший вопрос - переполнение стека, которое вы, возможно, захотите проверить.

Вы должны окончательно знать немного об этом. Регулярные выражения легко выучить, но сложно освоить. Вам не нужно узнавать все об этом, чтобы начать использовать его. Просто будьте благоразумны.

 

ТЛ; др

Вы должны знать о технологии, чтобы вы могли принять правильное решение о том, когда ее использовать.

Makach
источник
8

Я работаю во встроенной базе кода, в которой нет библиотеки регулярных выражений. Для выполнения определенной задачи потребовалось 275 строк кода, и потребовалось около двух недель для отладки всех ключевых случаев, между тестером и разработчиком. Позже я написал функцию, которая делает то же самое в составе утилиты javascript. Точная же задача с использованием регулярных выражений используются 10 строк кода и прекрасно работал около 15 минут.

Вам нужны регулярные выражения? Технически нет, но глупо намеренно оставаться в неведении относительно эффективного инструмента.

Карл Билефельдт
источник
6

процитировать другой ответ:

Регулярные выражения - очень краткий способ выразить, как сопоставлять шаблоны в тексте.

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

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

ним чимпский
источник
2
Много текста всегда зависит от домена. Вы программист в конце концов. Текст (в виде исходного кода) является вашим доменом. Эффективное управление текстом с помощью регулярных выражений делает вас более эффективным программистом.
квитанция
2
@ квантиль, которая не имеет никакого смысла. Вы действительно манипулируете своим исходным кодом с помощью регулярных выражений? Это звучит как настоящий кошмар. Регулярные выражения являются частью вашего кода, и ваш код взаимодействует с данными, специфичными для предметной области.
НимЧимпский
3
Я манипулирую исходным кодом с помощью регулярных выражений. Рефакторинг больших кусков кода вручную утомителен и подвержен ошибкам. Использование редактора, который поддерживает поиск и замену регулярных выражений (подсказка: почти каждый редактор поддерживает поиск и замену регулярных выражений), значительно упрощает рефакторинг.
квитанция
3
@ Данк, он не говорит, что это большой выигрыш в эффективности в течение всего жизненного цикла проекта, но скорее это может быть большой выигрыш за небольшой промежуток времени. Я также провел рефакторинг, где были сотни, даже тысячи, изменений в десятках файлов. За время существования проекта сэкономленные часы незначительны, но я, конечно, не хотел тратить часы или дни, которые потребовались бы, чтобы сделать те же изменения вручную. Современные IDE могут сделать это для вас без написания регулярных выражений, но иногда это невозможно (например, перемонтировать общий шаблон назначения).
Jmoreno
2
@NimChimpsky Regexps работают везде. IDE и инструменты рефакторинга работают только для определенных языков. Например, позволит ли ваш инструмент рефакторинга просмотреть все мои шаблоны и найти / удалить строку, похожую на номер телефона ( sites.google.com/site/steveyegge2/… )?
квитанция
4

Регулярные выражения можно рассматривать как очень полезный кросс-платформенный инструмент обработки. Я могу использовать регулярные выражения в моем коде, я могу использовать регулярные выражения в моем редакторе, я могу использовать регулярные выражения в командной строке!

Это не только то, что вам нужно, или вы должны изучить их. Это больше похоже

ВАУ! Я люблю регекс!

Xeoncross
источник
4

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

  • Что такое регулярные выражения и регулярные выражения.
  • Какие вещи они делают эффективно (разбор обычных языков)
  • Какие вещи неэффективны (разбор вложенных вещей, использование множества обратных ссылок)
  • Где получить информацию о синтаксисе, когда вам нужно прочитать или написать один.

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

hugomg
источник
Я думаю, что это действительно хороший момент. Знание того, как использовать обратные ссылки и другие расширенные функции некоторых движков RE, полезно лишь в меру. Во многих / большинстве случаев комбинирование использования RE с небольшим количеством логики более читабельно и проще в обслуживании.
Марк Бесси
3

Как уже упоминалось, Regex - это инструмент , очень полезный инструмент IMHO.

Рассмотрим этот пример:

//fomat number using string.replace and regex in javascript
function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",");
} 

Всего одна строка, чтобы преобразовать, например, число вроде 1000000.00 в «1,000,000.00»

Использование любого другого метода будет намного сложнее

emont01
источник
2
а это не сложно? это использует несколько специальных функций, не входящих в стандартный набор регулярных выражений. простая длина и заливка вполне подойдут для этого
урод, урод
2

Это не обязательно. Вам просто нужно знать об их существовании и когда их использовать. Синтаксические особенности легко найти и получить, используя Google и онлайн-инструменты.

логово
источник
2

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

Настоящий программист знает их регулярные выражения

Однако это немного предвзято, так как я в основном занимаюсь веб-программированием, где регулярные выражения - это то, с чем вам непременно придется столкнуться, как на стороне сервера, так и на стороне клиента. Если бы вы были программистом по сборке для встроенной системы в посудомоечной машине, вы бы, вероятно, вообще не сталкивались с регулярными выражениями. Но это все равно может пригодиться, так как в большинстве случаев вы лучше владеете своей средой разработки, когда знаете регулярные выражения (поиск и замена, поиск файла, поиск по нескольким файлам и т. Д.).

Кроме того, вам будет легче узнавать других программистов, если вы это знаете.

Aron Cederholm
источник
Кроме того, вначале бесполезно выучивать полные спецификации наизусть, поскольку существует множество разных диалектов. Вместо этого попытайтесь сосредоточиться на изучении основ: (1) составьте несколько простых регулярных выражений и изучите значение. * + {} [] () и - и несколько базовых классов. (2) с определенной спецификацией в ваших руках, попытайтесь понять, что происходит в регулярных выражениях, с которыми вы сталкиваетесь.
Арон Седерхолм,
Для чего вы используете reg exps в yr web dev. Это то, что я делаю, и я использовал как 5 раз в 10 лет +.
НимЧимпский
Для начала: анализ или проверка ввода пользователя (например, электронная почта, почтовый индекс / почтовый индекс, формы поиска пользователя). Но также для целей I18n и l10n для пользовательских и переменных строк перевода на нескольких языках / локалях. И они наверняка придут на помощь с некоторым обнаружением ошибок и довольно большой обработкой ошибок. И в мире CMS / блоги / комментарии для разметки вики / форума. Для анализа внешних данных (пользовательский ввод, очищенные страницы, синхронизированные ресурсы и т. Д.), Обработки и перезаписи содержимого / ссылок / чего угодно. Плюс ко всему для статистики и регистрации (обнаружение браузера, сортировка реферера, ...)
Aron Cederholm
-1 за такой безумно невежественный комментарий «Настоящий программист ...»
Данк
Это довольно поверхностный способ проверки пользовательского ввода, и я был бы удивлен, если бы ваши регулярные выражения были на 100% точными (проверка электронной почты известна). И я не использую эти «пользовательские и переменные строки перевода на нескольких языках / локалях», которые вы переводите между языками с помощью регулярных выражений - er wtf? Статистика цели - вы делаете статистику с регулярными выражениями? Переписывание ссылок / контента с помощью регулярных выражений звучит для меня как запах кода.
НимЧимпский
1

Это обязательно? Вы уже знаете, что ДОЛЖНЫ знать: что они существуют, что они есть и для чего они используются. Ваша работа как программиста - решать проблемы. Теперь вы знаете достаточно, чтобы начать учитывать их в решении вашей проблемы. Вы должны выучить регулярные выражения? Абсолютно. Приоритет зависит от вас ... есть рабочие места, где они будут использоваться каждый день, и рабочие места, где они никогда не будут использоваться. Простое руководство будет о том, сколько паттернов соответствует задачам, с которыми вы ожидаете столкнуться.

jmoreno
источник
1

Хм, мне нужно разделить запятыми и вывести этот список строк, позвольте мне написать функцию, содержащую цикл for, которая принимает аргумент-разделитель, и продолжать добавлять их вместе ... или я мог бы просто использовать эту существующую команду соединения.

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

Я немного напуган идеей виртуальных методов, но это должно помочь мне сократить эти списки, каждый для отдельного типа элемента, до одного списка. Тогда мне не нужно писать полдюжины подобных утверждений, обрабатывающих каждый список по-своему. Думаю, я должен усердно учиться и изучать эти вещи, потому что мой код будет намного проще и чище, если я это сделаю.

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

Бенедикт
источник
1

Краткий ответ: Нет, но ... знание это сила.

Я веб-разработчик, и я нахожу любое Регулярное выражение, которое мне обычно нужно, уже написано для меня. Однако у меня были проблемы с копированием и вставкой, и я не понимал, что он делал или нет, что представляет опасность для копирования и вставки НИЧЕГО.

Один пример: регулярное выражение электронной почты, которое я скопировал и вставил, не допускает период или плюс в сообщении электронной почты, которое разрешено в спецификации адреса электронной почты. На самом деле многие люди используют gmail с actalemail+sitename@gmail.com, так что становится проще фильтровать «sitename», если они решат спамить.

TheDPQ
источник
0

обычные выражения? Хммм ... иногда полезно знать их, но в большинстве случаев вы всегда используете одно и то же. Я часто использую регулярные выражения, но я не скажу, что мне это хорошо. Мне это совсем не нравится, и я думаю, что есть более важные вещи, чем регулярные выражения.

Но при проверке формул или данных это очень полезно. Я думаю, что почти каждая профессиональная форма проверяется с помощью регулярных выражений. ASP.NET использует его.

Но вообще: попробуйте сделать выражение, когда вам это нужно, и сохраните его. Надеюсь, вы будете использовать их не раз. Но не тратьте свое время с RegEx!

Smokefoot
источник
0

Это зависит от области / платформы, в которой вы работаете

  1. Для настольных приложений вы можете жить жизнью kool, ничего не зная о регулярных выражениях. Но обратите внимание, Visual Studio имеет поиск по регулярным выражениям, но мне интересно, если кто-нибудь использует его на регулярной основе. Я думаю, что нет (вы должны сначала исправить свое регулярное выражение, потому что вы можете сделать поиск :)).

  2. Как веб-разработчик, вам, скорее всего, придется изучать регулярные выражения. Вы можете сойти с рук, потому что вы можете легко найти фрагмент кода в Интернете, который будет достаточен для вас, но обучение поможет.

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

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

Noname
источник
0

Регулярные выражения - очень полезный инструмент, и существует множество ситуаций, когда программист должен их использовать. Вы не должны учить их всех наизусть, чтобы использовать. Просто используйте ссылку и сделайте свою задачу. После 10-20-50-100 (в зависимости от программиста) заданий, в которых вы использовали регулярные выражения, вы будете знать их все наизусть. Они изучаются сами, вы не должны учить их специально.

Ларри Синнабар
источник
0

Я уже вижу много ответов на этот вопрос, но все они, похоже, связаны с преимуществами знания регулярных выражений как инструмента в наборе инструментов программиста.

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

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

Практические преимущества использования регулярных выражений, конечно, огромны. Даже если вы не «программируете» с ними - я использую регулярные выражения, выполняющие поиск / замену в моем редакторе, и измеряю, насколько продуктивнее они меня делают.

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

Avi
источник
0

Роб Пайк так не считает :

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

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

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

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

Вестон С
источник
0

Позвольте мне просто сказать, что регулярные выражения часто являются подходящим инструментом для работы и очень удобны, особенно в приложениях, которые выполняют большую часть обработки текста. Однако запомнить их - безумие. У меня на стене прикреплена шпаргалка, на которой есть все специальные символы, якоря, классы персонажей, модификаторы шаблонов, метасимволы ... Просто потратьте 20 минут, чтобы научиться использовать их и получить шпаргалку, чтобы сохранить отслеживать все остальное. Все, что вам нужно, - это иметь возможность писать регулярные выражения, когда они вам нужны, обычно каждые 6 месяцев - примерно так же часто, как вы сталкиваетесь с проблемой, когда они являются лучшим инструментом для работы. Если вы не являетесь участником Perl, Latex, Emacs или какой-либо другой тяжелой команды по обработке текста.

Джонатан Хенсон
источник