LINUX.ORG.RU

Практика по регекпам? Где взять?

 


1

1

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

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



Последнее исправление: regexp_regexp (всего исправлений: 1)
Ответ на: комментарий от anonymous

Парсить? Регэкспами? Мощно ты на ноль поделил

Ээ?

f1xmAn ★★★★★
()
Ответ на: комментарий от regexp_regexp

Легко. Читай dragon book, там про эквивалентность грамматик написано.

anonymous
()
Ответ на: комментарий от zolden

спортивный интерес и рост над собой, а для этого надо в один регексп всё уместить

ну не факт, что одним регекспом будет лучше.

Вообще говоря, если у тебя части рвутся переводами строки, то желательно строки собирать, пока не наберёшь готовую лексему. Тогда парсишь то, что набрал. Одним регекспом это сделать невозможно, но можно одной командой sed.

Удачи. Я слишком стар, что-бы состязаться.

emulek
()
Ответ на: комментарий от DELIRIUM

я эту статью читал ещё года 3-4 назад

та я тоже, просто случайно попалась под руку.

emulek
()
Ответ на: комментарий от emulek

Переводами строк не рвётся.
Один регексп был бы полезен для гибкости, если вместо вариантов
{prefixXXXsuffix}{prefixsuffix}
{prefixXXXsuffix}{prefixYYYsuffix}{prefixsuffix}
(которые я идентифицировал просмотром нескольких логов)
встретится
{prefixXXXsuffix}{prefixYYYsuffix}{prefixZZZsuffix}{prefixsuffix}
или ещё длиннее...

zolden ★★★★★
()
Ответ на: комментарий от zolden

{prefixXXXsuffix}{prefixYYYsuffix}{prefixZZZsuffix}{prefixsuffix} или ещё длиннее...

я не очень понимаю в чём проблема?

$ echo "{prefixXXXsuffix}{prefixYYYsuffix}{prefixZZZsuffix}{prefixsuffix}" |\
sed -r 's/\{prefix([^}]*)suffix\}/→\1←/g'
→XXX←→YYY←→ZZZ←→←
emulek
()
Ответ на: комментарий от zolden

есть вот ещё такой вариант(http://lurkmore.to/Mindfuck)

$ echo "{prefixXXXsuffix}{prefixYYYsuffix}{prefixZZZsuffix}{prefixsuffix}" |\
sed -r ':l;s/\{prefix([^}]*)suffix\}/→\1←/;T;h;s/.*←//;x;s/←.*/←/p;x;bl'
→XXX←
→YYY←
→ZZZ←
→←

emulek
()
Ответ на: комментарий от emulek

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

zolden ★★★★★
()
Ответ на: комментарий от zolden

можно ли матчинг каждой строки выводить соответственно на отдельной строке?

у тебя как-то по другому получается? Sed сначала отрезает \n, потом обрабатывает строку, потом выводит результат с добавленным \n. Если ты хочешь, можешь ещё \n нафтыкать по вкусу.

ок, я уловил как отучить регексп от жадности

ну не совсем получается [[^X]]*, если в X у тебя многобукв. В этом случае можно сначала заменить многобукв на специальный символ, например на тот же \n (т.к. sed его отрезает), ещё можно \r, или какой-то юникод.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.