Russian Qt Forum

Qt => Общие вопросы => Тема начата: Zmey от Январь 10, 2005, 17:26



Название: Аналог QRegExp
Отправлено: Zmey от Январь 10, 2005, 17:26
QRegExp::exactMatch сильно медленно... Может кто-нибудь знает простенький класс, без всяких поддержек Перловских регулярных выражений, просто чтобы сравнивать строки с шаблоном с использованием * и ?   :?:


Название: Аналог QRegExp
Отправлено: Racheengel от Январь 11, 2005, 12:50
Я тоже этот RegExp терпеть не могу... Шняга редкостная... Мало того, что тормозит, так еще и работает через раз и тааак криво...


Название: Аналог QRegExp
Отправлено: Admin от Январь 11, 2005, 13:23
так писали бы багрепорты тролтехам
то что не работает

у нх хороший подход все в одном


тебе что то понадобилось, глядишь а это уже есть
и ничего стороннего брать не надо :)


Название: Аналог QRegExp
Отправлено: Zmey от Январь 11, 2005, 14:10
Нашел таки, что мне было нужно:
Код:

int wildcmp( char *wild, char *string2 )
{
    char *cp, *mp;
        while ((*string2) && (*wild != '*'))
         {

            if ((*wild != *string2) && (*wild != '?')) {
            return 0;
        }

        wild++;
        string2++;
    }

while (*string2) {
            if (*wild == '*') {
                if (!*++wild) {
                return 1;
            }

            mp = wild;
            cp = string2+1;
            } else if ((*wild == *string2) || (*wild == '?')) {

            wild++;
            string2++;
            } else {

            wild = mp;
            string2 = cp++;
        }

    }

while (*wild == '*') {
        wild++;
    }

return !*wild;
}


Название: Аналог QRegExp
Отправлено: Admin от Январь 11, 2005, 15:25
да на такие сишные конструкции страшно смотреть :)


Название: Аналог QRegExp
Отправлено: pish_r от Январь 15, 2005, 21:25
Вопервых, регулярные выражения по определению не могут быть очень быстры.
Вовторых, юзал QRegExp на простеньких примерах, то глюков и особых тормозов не видал.
Для серьезного парсинга юзал boost::regexp,  попробуйте.
А приведенный код доверия не внушает.


Название: Аналог QRegExp
Отправлено: Zmey от Январь 17, 2005, 09:40
Цитата: "pish_r"
...
А приведенный код доверия не внушает.


Какие именно операторы не внушают тебе доверия?..


Название: Аналог QRegExp
Отправлено: Anonymous от Январь 17, 2005, 12:00
Цитата: "Zmey"
Цитата: "pish_r"
...
А приведенный код доверия не внушает.


Какие именно операторы не внушают тебе доверия?..


Ну не надо так. Не ты один С/С++ знаешь.
Этот код к регулярным выражениям имеет только то отношение, что делает поиск по
знакам, используемым регулярными выражениями.
А про машину Тьюринга никогда не слыхал?
И не думал почему при реализации Регекспов ее используют?
Если подобным этому коду реализовать полностью регекспы, то тормозить будет в разы больше, чем в QRegExp


Название: Аналог QRegExp
Отправлено: Zmey от Январь 17, 2005, 13:50
Да мне до одного места все РегЭкспы, мне был нужен код для сравнения строки и шаблона, заданного с символами * и ?, и справляется он с этим прекрасно, что в нем не внушает тебе доверия я так и не понял.


Название: Аналог QRegExp
Отправлено: pablo от Январь 17, 2005, 14:24
На мой взгляд конструкция то может и ничего, только выглядет уж больно сложновато.
Для сравнения строк и вообще для операций с символами язык Си предлогает слишком запутанные конструкции.
Гораздо всё проще выглядит на C++, хоть и производительность одинаковая или не сильно отличается.