Я новичок в программировании, и на собеседовании у меня возник вопрос о регулярных выражениях; Само собой разумеется, я не мог ответить. Поэтому мне было интересно, должен ли я изучать регулярные выражения? Это необходимо для каждого программиста во всех областях? Или это необходимо для программирования для некоторых конкретных областей?
Смежные вопросы:
regular-expressions
пользователей
источник
источник
Ответы:
Регулярные выражения - это невероятно удобный инструмент, доступный на стольких языках, что большинство разработчиков рано или поздно изучат их.
Для интервьюера это хороший способ проверить опыт во время интервью. Если вы проводите собеседование с кем-то, требующим многолетнего опыта, но не понимающим его, вам нужно копать дальше.
источник
Регулярные выражения являются инструментом. Это очень полезный инструмент, поэтому многие люди хотят научиться им пользоваться. Тем не менее, вы не обязаны изучать, как использовать этот конкретный инструмент, равно как и нет необходимости изучать что-либо еще.
источник
if (!(foo && bar))
=>if (!foo || !bar)
. Возможно, вы использовали его и не поняли, или, может быть, вас не научили правильному материалу.Я не удивлюсь, если, например, программист игр или программист на LHC никогда не научится регулярным выражениям. Я мог бы даже дать программисту игры пропуск, не зная SQL.
Но если вы работаете в каких-либо информационных системах и не знаете регулярных выражений, вы оказываете себе медвежью услугу.
С другой стороны, я не ожидал бы, что ваш стандартный программист IS будет знать математику, как программист игр. Есть разные дисциплины программиста, однако мы должны попасть под зонтик «информационных систем».
источник
Регулярные выражения - очень краткий способ выразить, как сопоставлять шаблоны в тексте.
Требование разбирать и извлекать данные из текста или проверять, соответствует ли какой-то текст определенному шаблону, очень часто возникает в программировании, поэтому я бы сказал, что да, важно узнать о них и понять их.
Они являются хорошим инструментом в вашем наборе инструментов, и я ожидаю, что любой опытный программист знает, как их использовать.
Одним из лучших ресурсов для изучения регулярных выражений является книга Джеффри Фридла « Освоение регулярных выражений» . Он довольно продвинутый, поэтому вы можете захотеть прочитать его, когда у вас будет больше опыта.
Вы можете начать с учебного пособия по регулярному выражению .
источник
В отличие от большинства ответов здесь, я не думаю, что знание навыков является обязательным навыком для продуктивного программиста. Когда я беру интервью у кандидатов на должность, я буду копать глубже, если они чувствуют себя обязанными привнести свои навыки самореализации. Почему? они часто используются в местах, потому что им нравится правильный молоток, но часто вам нужна была отвертка. Ищите так по HTML и регулярному выражению, и вы увидите довольно много вопросов и довольно много причин, почему регулярное выражение не подходит.
Прежде чем я буду выступать за наем собеседника, требуется умение делать правильное OOD, знание регулярных выражений, безусловно, не так. И я на самом деле не думаю, что кто-то верит, что вы можете быть более продуктивным программистом, знающим регулярные выражения, но испытывающим недостаток в таких областях, как анализ, проектирование и знание используемой среды.
Конечно, иногда они удобны, но за более чем 20-летний опыт работы в качестве профессионального разработчика я думаю, что использовал их в коде менее 20 раз (и даже написал несколько сценариев на Perl). Я использую их регулярно для поиска и поиска. заменить хотя.
источник
Независимо от области, в которой вы работаете, регулярные выражения - это полезный инструмент, потому что большинство языков программирования написаны в виде простого текста. Таким образом, Regex - отличный способ манипулировать и реорганизовывать ваш исходный код, и он встроен во многие текстовые редакторы. Я видел бесчисленное количество программистов, которые неоднократно вносили изменения в исходные файлы, когда регулярное выражение делало эти изменения намного быстрее и точнее.
Это то, о чем говорится в главе 3 «Прагматического программиста», когда простой текст является «основным сырьем для программирования».
источник
Джефф Этвуд написал отличный блог о регулярных выражениях, в нем есть эта удивительная цитата:
Существует также отличный ответ на хороший вопрос - переполнение стека, которое вы, возможно, захотите проверить.
Вы должны окончательно знать немного об этом. Регулярные выражения легко выучить, но сложно освоить. Вам не нужно узнавать все об этом, чтобы начать использовать его. Просто будьте благоразумны.
ТЛ; др
Вы должны знать о технологии, чтобы вы могли принять правильное решение о том, когда ее использовать.
источник
Я работаю во встроенной базе кода, в которой нет библиотеки регулярных выражений. Для выполнения определенной задачи потребовалось 275 строк кода, и потребовалось около двух недель для отладки всех ключевых случаев, между тестером и разработчиком. Позже я написал функцию, которая делает то же самое в составе утилиты javascript. Точная же задача с использованием регулярных выражений используются 10 строк кода и прекрасно работал около 15 минут.
Вам нужны регулярные выражения? Технически нет, но глупо намеренно оставаться в неведении относительно эффективного инструмента.
источник
процитировать другой ответ:
Поэтому, если это важная часть вашей работы, возможно, есть лучший способ спроектировать систему, которую вы разрабатываете. Если много текста не является предметной областью для вашей области (например, биоинформатика).
Я работал над тремя разными корпоративными системами (в трех разных компаниях более десяти лет), и я написал их менее пяти раз, включая копирование и вставку основного средства проверки электронной почты дважды.
источник
Регулярные выражения можно рассматривать как очень полезный кросс-платформенный инструмент обработки. Я могу использовать регулярные выражения в моем коде, я могу использовать регулярные выражения в моем редакторе, я могу использовать регулярные выражения в командной строке!
Это не только то, что вам нужно, или вы должны изучить их. Это больше похоже
ВАУ! Я люблю регекс!
источник
Вам не нужно знать все маленькие причуды регулярных выражений, чтобы быть великим программистом, особенно потому, что все они имеют тенденцию немного варьироваться в зависимости от различных реализаций и языков программирования. То , что вы действительно должны знать,
В любом случае, вам даже не нужно сильно волноваться о том, понадобится ли вам слишком много усилий, чтобы изучить их в первую очередь. Простейшие операторы (
.
,*
,|
,()
и т.д.) почти повсеместно присутствуют и пройти долгий путь!источник
Как уже упоминалось, Regex - это инструмент , очень полезный инструмент IMHO.
Рассмотрим этот пример:
Всего одна строка, чтобы преобразовать, например, число вроде 1000000.00 в «1,000,000.00»
Использование любого другого метода будет намного сложнее
источник
Это не обязательно. Вам просто нужно знать об их существовании и когда их использовать. Синтаксические особенности легко найти и получить, используя Google и онлайн-инструменты.
источник
Я бы действительно посоветовал вам изучить регулярные выражения. На работе, когда мы нанимаем программистов, кандидаты, которые не знают регулярных выражений, обычно быстро избавляются. Не потому, что им абсолютно необходимо знать регулярные выражения, а потому, что это очень хороший показатель их уровня понимания программирования и уровня зависимости от программирования.
Настоящий программист знает их регулярные выражения
Однако это немного предвзято, так как я в основном занимаюсь веб-программированием, где регулярные выражения - это то, с чем вам непременно придется столкнуться, как на стороне сервера, так и на стороне клиента. Если бы вы были программистом по сборке для встроенной системы в посудомоечной машине, вы бы, вероятно, вообще не сталкивались с регулярными выражениями. Но это все равно может пригодиться, так как в большинстве случаев вы лучше владеете своей средой разработки, когда знаете регулярные выражения (поиск и замена, поиск файла, поиск по нескольким файлам и т. Д.).
Кроме того, вам будет легче узнавать других программистов, если вы это знаете.
источник
Это обязательно? Вы уже знаете, что ДОЛЖНЫ знать: что они существуют, что они есть и для чего они используются. Ваша работа как программиста - решать проблемы. Теперь вы знаете достаточно, чтобы начать учитывать их в решении вашей проблемы. Вы должны выучить регулярные выражения? Абсолютно. Приоритет зависит от вас ... есть рабочие места, где они будут использоваться каждый день, и рабочие места, где они никогда не будут использоваться. Простое руководство будет о том, сколько паттернов соответствует задачам, с которыми вы ожидаете столкнуться.
источник
Хм, мне нужно разделить запятыми и вывести этот список строк, позвольте мне написать функцию, содержащую цикл for, которая принимает аргумент-разделитель, и продолжать добавлять их вместе ... или я мог бы просто использовать эту существующую команду соединения.
Мне нужно отсортировать эти сложные объекты на основе пары атрибутов, которые есть у каждого объекта, позвольте мне напомнить себе, как написать функцию сортировки, которая делает это, о нет, я могу просто использовать существующую стандартную функцию сортировки, которую поддерживает этот язык. Мне нужно научиться писать собственный компаратор, но это не должно быть слишком сложно, это, очевидно, лучше, чем поддерживать собственную функцию сортировки.
Я немного напуган идеей виртуальных методов, но это должно помочь мне сократить эти списки, каждый для отдельного типа элемента, до одного списка. Тогда мне не нужно писать полдюжины подобных утверждений, обрабатывающих каждый список по-своему. Думаю, я должен усердно учиться и изучать эти вещи, потому что мой код будет намного проще и чище, если я это сделаю.
Мне нужно извлечь из этого текстового файла эти пары слов и значений среди всего этого другого шума, позвольте мне написать анализатор из пятидесяти строк, чтобы читать символы один за другим, и если один из символов выглядит как начало того, что я В поисках я установлю эту переменную состояния и начну ее разбор и так далее и т. д. и т. д. Конечно, мой случай явно настолько особенный, что никто раньше не сталкивался с подобной проблемой и не изобрел универсальное решение, которое занимает одну строку кода, чтобы сделать это. Это напоминает мне, что я должен взять те книги по программированию, которые я никогда не читал, в подержанный книжный магазин.
источник
Краткий ответ: Нет, но ... знание это сила.
Я веб-разработчик, и я нахожу любое Регулярное выражение, которое мне обычно нужно, уже написано для меня. Однако у меня были проблемы с копированием и вставкой, и я не понимал, что он делал или нет, что представляет опасность для копирования и вставки НИЧЕГО.
Один пример: регулярное выражение электронной почты, которое я скопировал и вставил, не допускает период или плюс в сообщении электронной почты, которое разрешено в спецификации адреса электронной почты. На самом деле многие люди используют gmail с actalemail+sitename@gmail.com, так что становится проще фильтровать «sitename», если они решат спамить.
источник
обычные выражения? Хммм ... иногда полезно знать их, но в большинстве случаев вы всегда используете одно и то же. Я часто использую регулярные выражения, но я не скажу, что мне это хорошо. Мне это совсем не нравится, и я думаю, что есть более важные вещи, чем регулярные выражения.
Но при проверке формул или данных это очень полезно. Я думаю, что почти каждая профессиональная форма проверяется с помощью регулярных выражений. ASP.NET использует его.
Но вообще: попробуйте сделать выражение, когда вам это нужно, и сохраните его. Надеюсь, вы будете использовать их не раз. Но не тратьте свое время с RegEx!
источник
Это зависит от области / платформы, в которой вы работаете
Для настольных приложений вы можете жить жизнью kool, ничего не зная о регулярных выражениях. Но обратите внимание, Visual Studio имеет поиск по регулярным выражениям, но мне интересно, если кто-нибудь использует его на регулярной основе. Я думаю, что нет (вы должны сначала исправить свое регулярное выражение, потому что вы можете сделать поиск :)).
Как веб-разработчик, вам, скорее всего, придется изучать регулярные выражения. Вы можете сойти с рук, потому что вы можете легко найти фрагмент кода в Интернете, который будет достаточен для вас, но обучение поможет.
Есть такие области, как документация, судебные разбирательства, юридические вопросы, где регулярное выражение является незаменимым инструментом. Вы должны это знать. Если вы этого не сделаете, вы просто не получите работу.
Короче говоря, если это не является частью должностной инструкции, даже не беспокойтесь об этом. Если вам нравится изучать это, изучите это для забавы.
источник
Регулярные выражения - очень полезный инструмент, и существует множество ситуаций, когда программист должен их использовать. Вы не должны учить их всех наизусть, чтобы использовать. Просто используйте ссылку и сделайте свою задачу. После 10-20-50-100 (в зависимости от программиста) заданий, в которых вы использовали регулярные выражения, вы будете знать их все наизусть. Они изучаются сами, вы не должны учить их специально.
источник
Я уже вижу много ответов на этот вопрос, но все они, похоже, связаны с преимуществами знания регулярных выражений как инструмента в наборе инструментов программиста.
Я предпочитаю думать о регулярных выражениях как о типе знаний, расширяющих понимание работы компьютеров. Как только кто-то действительно получает то, что является обычным языком, и что вы можете выразить его с помощью трех простых операций, я считаю, что это дает им нечто большее, чем просто инструмент для проверки простых строк.
Они могут лучше понимать синтаксический анализ в целом, что полезно практически для любого вида программирования, и лучше понимать, как работают инструменты, которые мы используем на регулярной основе (компилятор, редактор, браузер и т. Д.).
Практические преимущества использования регулярных выражений, конечно, огромны. Даже если вы не «программируете» с ними - я использую регулярные выражения, выполняющие поиск / замену в моем редакторе, и измеряю, насколько продуктивнее они меня делают.
Поэтому, хотя это и не является необходимым, я думаю, что это один из первых инструментов, который должен освоить программист.
источник
Роб Пайк так не считает :
Стоит отметить, что Пайк, конечно, признает, что у них есть место, и ИМХО, регулярные выражения - довольно мощный инструмент, который абсолютно вознаграждает время, потраченное на обучение использованию, и с этой точки зрения, я бы абсолютно рекомендовал учиться их. Но, возможно, реальная проблема заключается в том, что это лейкопластырь, который позволил мне узнать меньше о лексизировании и разборе, чем я должен был. :)
источник
Позвольте мне просто сказать, что регулярные выражения часто являются подходящим инструментом для работы и очень удобны, особенно в приложениях, которые выполняют большую часть обработки текста. Однако запомнить их - безумие. У меня на стене прикреплена шпаргалка, на которой есть все специальные символы, якоря, классы персонажей, модификаторы шаблонов, метасимволы ... Просто потратьте 20 минут, чтобы научиться использовать их и получить шпаргалку, чтобы сохранить отслеживать все остальное. Все, что вам нужно, - это иметь возможность писать регулярные выражения, когда они вам нужны, обычно каждые 6 месяцев - примерно так же часто, как вы сталкиваетесь с проблемой, когда они являются лучшим инструментом для работы. Если вы не являетесь участником Perl, Latex, Emacs или какой-либо другой тяжелой команды по обработке текста.
источник