LINUX.ORG.RU

И опять вопрос про регулярные выражения


0

0

Допустим у меня есть список вида... гм...
/path/to/голова
/path/to/жопа1
/path/to/жопа2
/path/to/полнаяжопа1

Мне нужно получить что-то вроде

жопа 1
жопа 2
жопа 1 полная

У меня есть скрипт sed -e 's/^\(.*\)\/\(жопа\)\([0-9]\)/\2\ \3/' который мне соответственно выводит

жопа 1
жопа 2
жопа 1

Что делать дальше не знаю...
★★★★★

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

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

Сначала basename, а там уже парси.

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

Это полная жопа 8)

вот такой режексп отловит нужные слова, останется его только разобрать:
/(full)*(ass)/

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

>вот такой режексп отловит нужные слова, останется его только разобрать: /(full)*(ass)/

Такое выражение требует наличия full, а у меня его может и не быть...

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

Кстати косяк там есть, но не в этом, а в том что если полная посреди строки то не найдется. Вот исправленный и проверенныый:

(.*(full).*)*.*(ass)

http://pic.ipicture.ru/uploads/080924/z4RUg3EGJR.jpg

Как побороть первый ненужный capture незнаю, наверное проще его пропустить, и работать со следующими.

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

Спасибо. Правда я вспомнил что существует конвеер и вызвал sed два раза. Первым вырезал full, поудобнее отделив его от остальной строки, а остатки разобрал вторым. Не Ъ. Ничего не поделаешь. А что за программа на скрине?

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

обычный пример из qt4 (qtdemo), удобен тем что показывает попадания режекспа.

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