Практика регулярных выражений - PullRequest
19 голосов
/ 09 июля 2009

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

Может ли кто-нибудь направить меня к ресурсу, дающему сложные проблемы с регулярными выражениями , подобному тому, что есть в python challenge , который выглядит примерно так, но в некоторой степени загадочно, как мода:

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

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

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


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

Проблемы

Regex SW

Черт ... тонна вещей на regexlib

Похожие сообщения на SO

Ответы [ 7 ]

18 голосов
/ 09 июля 2009

Поиск регулярных выражений с вопросами в переполнении стека и попытка ответить на них.

3 голосов
/ 09 июля 2009

Могу ли я предложить что-то отличное для практики регулярных выражений от моего личного опыта?

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

Другой пример, кто-то реорганизовал класс, который вы использовали во всем коде, он назывался foo.bar.baz;, теперь это bar.baz.foo; написать регулярное выражение, чтобы найти и заменить все первое вторым.

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

2 голосов
/ 09 июля 2009

Я настоятельно рекомендую Expresso (http://www.ultrapico.com/Expresso.htm),, особенно если вы используете .NET. Он хорош как для построения и анализа регулярных выражений, так и для генерации кода. Это спасло меня много-много часов.

1 голос
/ 08 июня 2014

Используйте этот сайт, чтобы изучить Regex

   http://qntm.org/files/re/re.html

и для практики используйте этот сайт

   http://www.regexr.com/
1 голос
/ 09 июля 2009

Вы можете попробовать RegexCoach . Это позволяет вам в интерактивном режиме экспериментировать с регулярными выражениями против вашей целевой строки.

1 голос
/ 09 июля 2009

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

0 голосов
/ 09 июля 2009

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

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

sed -n -e '/regexp/p'

чтобы найти строки, так как я могу обновить его позже с заменой

sed -e '/lineregexp/s,oldregex,newtext,'

Для действительно продвинутого использования вы можете использовать sed для обновления сценариев во время выполнения вместо кодирования в сложных операторах if / case или параметрах командной строки или даже для изменения структуры сценария, но это выходит за рамки этого ответа.

Редактировать: убрал p из второго примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...