Как важный знает Regexs?

Во-первых, есть ли у вас индекс по столбцу orderno в таблице items? Я полагаю, вы не возвращаете много строк ... поэтому отсутствующий индекс может быть убийцей.

Тогда я был бы склонен изменить запрос, чтобы избежать необходимости в group by следующим образом (конечно, если я понимаю ваше намерение):

8
задан annakata 6 February 2009 в 11:44
поделиться

16 ответов

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

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

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

25
ответ дан 5 December 2019 в 04:29
поделиться

Разработчик думал, что имел одну проблему и пытался решить ее с помощью regex. Теперь у него есть 2 проблемы.

-1
ответ дан 5 December 2019 в 04:29
поделиться

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

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

0
ответ дан 5 December 2019 в 04:29
поделиться

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

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

0
ответ дан 5 December 2019 в 04:29
поделиться

Что делает следующее?

"([A-Za-z] [A-Za-z0-9 +.-] {1,120}: A-Za-z0-9/{1,333} (# ([a-zA-Z0-9] [a-zA-Z0-9$ _. +! *;/?: и ~ = %-] {0,1000}))?)"

Сколько времени это брало Вас для выяснения? отлаживать?

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

0
ответ дан 5 December 2019 в 04:29
поделиться

Я думаю, зная, что regex является довольно важным навыком. В то время как использование regex в среде программирования / язык является вопросом удобного в сопровождении кода, я нахожу, что знание regex полезно с некоторыми командами (скажите что egrep), редакторы (энергия, emacs и т.д.). Используя regex, чтобы сделать находка и замена в энергии очень удобны, когда у Вас есть текстовый файл, и Вы хотите сделать некоторое форматирование время от времени.

2
ответ дан 5 December 2019 в 04:29
поделиться

Я соглашаюсь с в значительной степени, все сказало здесь и просто должно включать обязательное тонкое замечание:

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

(приписанный Jamie Zawinski)

Как большинство шуток, это содержит ядро истины.

-1
ответ дан 5 December 2019 в 04:29
поделиться

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

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

"юниору всегда разрешают дрейф обучения"

Если бы старший не, то я не нанял бы его!

Тем, которые обсуждают, насколько сложный и нечитабельный регулярное выражение: Если regexp решение проблемы сложно и нечитабельно, то, вероятно, сама проблема! Удача в решении его другим способом...

1
ответ дан 5 December 2019 в 04:29
поделиться

Не блестящий ответ, но везде я работал, следующее сохраняется

0 <Число людей, которые (полностью) понимают regex <1

Если бы я знал, как сделать это, я записал бы, что предыдущее выражение как regex, но я не могу. Лучшим, который я мог придумать на лету, является s/fully/a little/g - это - мой предел (и это - вероятно, не regex).

Более серьезный ответ - то, что право regex решит все виды проблем с одной (выход) строка кода. Но у Вас будут настоящие проблемы, отлаживающие его, если это пойдет не так, как надо. Поэтому, по моему скромному мнению, комплекс regex однако 'чистый/умный' является ответственностью, если требуется десять строк кода для тиражирования его, почему это - проблема, память/дисковое пространство является внезапно дорогой снова?

BTW, который я хотел бы знать, сравнены ли regexs быстро с эквивалентным кодом.

2
ответ дан 5 December 2019 в 04:29
поделиться

Не ясно, какой ответ Вы ожидаете.

Я могу вообразить примерно три вида ответа на этот вопрос:

  1. Regexen важны для образования профессиональных программистов. Они включают использованию мощные инструменты оболочки Unix, и находящаяся в regex поисковая замена может существенно сократить портящую текст ручную работу, которая является частью жизни программиста. Программисты, которые не знают regexen, просто интеллектуально ленивы, который является очень плохой чертой для программиста.

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

  3. Некоторым психам нравится помещать regexs все (я смотрю на Вас, парень жемчуга, который реализовал находящийся в regex Тетрис в жемчуге). Но действительно, они - просто немного мелочей информатики, чьи только практическое применение находится в записи синтаксических анализаторов. Им широко преподают, потому что они делают хорошую обучающую тему, по которой можно оценить студентов, и как большинство таких тем она может забытый второе, Вы ступаете из комнаты экзамена.

Вы заметите тщательное использование форм множественного числа "regexen" (про), "regexps" (осторожный нейтральный) и "regexs" (довод "против").

Лично, я - первый вид. Хорошим программистам нравится учить новые языки, и они ненавидят повторяющуюся ручную работу.

2
ответ дан 5 December 2019 в 04:29
поделиться

То, что все языки поддерживают regexs, должно означать что-то!

2
ответ дан 5 December 2019 в 04:29
поделиться

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

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

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

3
ответ дан 5 December 2019 в 04:29
поделиться

В статье Steve Yegge, Пяти Существенных Вопросах о Телефонном экране, необходимо считать раздел "Area Number Three: Scripting and Regular Expressions".

У Steve Yegge есть некоторые интересные моменты. Он дает проблемы реального мира, с которыми он встретился с клиентами, имеющими необходимость проанализировать 50 000 файлов для конкретного шаблона номера телефона. Заявители, которые знают слезу регулярных выражений через проблему через несколько минут, в то время как те, кто не пишет монстру мультисотню программ строки, которые являются очень громоздкими. Эта статья убедила меня, что я должен изучить регулярные выражения.

3
ответ дан 5 December 2019 в 04:29
поделиться

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

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

6
ответ дан 5 December 2019 в 04:29
поделиться

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

Но необходимо также знать то, что можно сделать с regexes и что нет. В этой точке это пригождается, если Вы знаете иерархию иерархии Chomsky. Иначе Вы заканчиваете тем, что пытались использовать регулярные выражения, чтобы проанализировать контекстно-зависимые языки и задаться вопросом, почему Вы не можете получить свое regex право.

2
ответ дан 5 December 2019 в 04:29
поделиться

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

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

  • Создайте regex с альтернативами и выполните единственное соответствие.
  • Протестируйте каждую строку в свою очередь с string.Contains.

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

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

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

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

Править: В ответ на редактирование вопроса...

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

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

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

18
ответ дан 5 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: