LINUX.ORG.RU

как обработать маску с *?

 


0

1

Есть ли для C++ или только для Qt 4/5 какая-нибудь либочка или кодик чтобы обрабатывать выражения маски со звездочками?

Я недавно такое писал но для звездочки слева и справа и то в одной строке, а мне бы

*test*mask*
. Мне не влом навелосипедить, но вдруг умные дяди решают это иначе, каким-то готовым кодом?

но вдруг умные дяди

ахахах

anonymous
()

Конвертируй в регулярку.

anonymous
()

man 7 regex

AFAIK то, что ты хочешь называется глоббинг, и делается bash'ем и другими оболочками самостоятельно, т.е. не стандарт. Хотя может у кого и есть готовая либа, я не в курсе.

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

Хотя может у кого и есть готовая либа, я не в курсе.

Я как-то искал либу, но у всех собственные велосипеды, не оформленные в виде отдельных библиотек.

Проще и в самом деле на ходу конвертировать в регулярку.

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

там сложность в том, что оно на самом деле очень разное. Разночтения возникают на таких башизмах например как {x..y..z}, а некоторые программы умеют файлы типа /usr/**/bin/file, ну и ещё Over9000 велосипедов с квадратными колёсами.

ИМХО проще дать юзеру возможность вбивать регулярки, если уж он такой умный. И не ломать голову, что делать с [а-я] в utf-8.

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

Спасибо всем за отзывы! А вот fnmatch - самое близкое к тому что хотелось!

I-Love-Microsoft ★★★★★
() автор топика

fnmatch (3)

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

О! Брат по разуму. Я уж думал я один остался на этой планете.

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

Интересный момент, странно что я прошляпил такую интересинку в доках...

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от KennyMinigun

Кстати, заметил что аргументы к программе, например /path/to/dir/file*02*.csv - уже обрабатываются как раз fnmatch или чем-то подобным и в результате приходит сотня параметров к программе... Возможно это особенность Qt.

Меня беспокоит - есть ли лимиты длины аргументов к программам в Linux? Вот будет тысяча файлов и все под маску подойдут - что будет?

I-Love-Microsoft ★★★★★
() автор топика
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

есть ли лимиты длины аргументов к программам в Linux?

$ getconf ARG_MAX
2097152

или xargs --show-limits

sergej ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

аргументы к программе, например /path/to/dir/file*02*.csv - уже обрабатываются как раз fnmatch или чем-то подобным

они обрабатыватся шелом и в программу приходят уже все чохом :-)

MKuznetsov ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Кстати, заметил что аргументы к программе, например /path/to/dir/file*02*.csv - уже обрабатываются как раз fnmatch или чем-то подобным и в результате приходит сотня параметров к программе... Возможно это особенность Qt.

это башик тебе раскрывает

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

Ясно, понял, закрываю в двойные кавычки и уже не раскрывает. Желательно мне самому это всё делать, через fnmatch или QRegExp.

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