crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

AD
  опции профиля:
сообщение 27.8.2008, 17:29
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Буду благодарен, если напишите правильный regexp для след. цели: надо найти в строке символы, не являющиеся цифрами и точкой/запятой.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 1.9.2008, 16:34
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AD @ 1.9.2008, 19:57) *
, а все сотальные, удовлетворяющие заданному регулярному выражению, затирает

ЗАТИРАЕТ?
наверное правильнее сказать не возвращает.
тебе надо указатель дальше двигать по тексту, типа этого
rx.indexIn(text, pos)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 10.9.2008, 15:30
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Извините, забыл сразу выложить код, как я реализовал. Вот сейчас выкладываю:
source

/// Удаление из имени событий всех событий, отвечающим фильтру - "Другие"
void ScrTrack::deleteOther(EVENT_NAME* evn)
{
    QRegExp rx("[\\d.|,]+[WC]?_O(N|FF)\\b");
    QRegExp reg("[\\d.|,]"), reg1("[_]"), reg2("[O]"), reg3("[N|FF]");
    QString result_string = "";
    bool t = (evn -> ev_name.find(" ") == -1) ? false : true;
    int pos = 0;
    while((pos = rx.indexIn(evn -> ev_name, pos)) != -1)
    {
        if(!t){ result_string = evn -> ev_name; break; }
        QStringList l1=rx.capturedTexts();
        for(QList<QString>::iterator iter=l1.begin(); iter!=l1.end(); ++iter)
        {
            int _if = iter -> find(reg), _if1 = iter -> find(reg1), _if2 = iter -> find(reg2), _if3 = iter -> find(reg3);
            if(iter -> find(reg) == -1 || iter -> find(reg1) == -1 || iter -> find(reg2) == -1
                || iter -> find(reg3) == -1) continue;
            result_string += *iter;
            result_string += "   ";
        }
        pos += rx.matchedLength();
    }

    evn -> ev_name = result_string.simplified();
    if(evn -> ev_name.find(rx) != -1)
    {
        if(evn -> ev_name.find(" ") == -1 && t)
        {
            double fs = getMode(evn);
            evn -> mode = fs + 100;
        }
        else if(evn -> ev_name.find(" ") != -1)
        {
            double fs = getMode(evn, true);
            evn -> mode = fs + 100;
        }
    }
}


Регэксп rx - это регэксп, который определяет те последовательности символов, которые следует оставить. Ну а далее, путем сравнений - это реализовано!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- AD   Правильное написание regexp   27.8.2008, 17:29
- - Tonal   [^\d.,]   27.8.2008, 19:29
- - Litkevich Yuriy   Tonal, выглядит почти так ;)   27.8.2008, 21:41
|- - AD   Хотел немного уточнить - а как сделать так, чтобы ...   28.8.2008, 13:28
|- - AD   // Вот сделал вот такой regexp! QRegExp rx...   28.8.2008, 16:41
|- - Tonal   Цитата(AD @ 28.8.2008, 20:41) QRegExp rx...   29.8.2008, 8:54
|- - AD   ЦитатаУжос! Ты бы прочитал что-нибудь по регэк...   29.8.2008, 10:09
- - Litkevich Yuriy   Цитата(AD @ 28.8.2008, 20:41) символы ...   28.8.2008, 16:46
|- - AD   В регэкспе как раз те словосочетания, которые не у...   28.8.2008, 16:55
- - Litkevich Yuriy   вот и впиши его туда   28.8.2008, 17:02
|- - AD   Цитата(Litkevich Yuriy @ 28.8.2008, 18:02...   28.8.2008, 17:25
- - Litkevich Yuriy   Так давай с начала, надо найти в строке символы, н...   28.8.2008, 17:46
|- - AD   Цитата(Litkevich Yuriy @ 28.8.2008, 18:46...   28.8.2008, 18:02
- - Litkevich Yuriy   смысл помоему не поменялся. Т.е. анализатор ...   28.8.2008, 18:06
|- - AD   Цитата(Litkevich Yuriy @ 28.8.2008, 19:06...   28.8.2008, 18:22
- - Litkevich Yuriy   Цитата(AD @ 29.8.2008, 14:09) символы заб...   29.8.2008, 10:48
- - Tonal   1) Про символ '\b' нужно читать не в ...   29.8.2008, 12:15
|- - AD   Цитата(Tonal @ 29.8.2008, 13:15) 1) Про с...   29.8.2008, 12:24
- - Tonal   Напиши какие строки у тебя на входе, и что тебе ну...   29.8.2008, 12:58
|- - AD   ЦитатаНапиши какие строки у тебя на входе, и что т...   29.8.2008, 13:29
- - Tonal   1) Составляем выражение, которое найдёт последоват...   30.8.2008, 0:08
|- - AD   Цитата(Tonal @ 30.8.2008, 1:08) 1) Состав...   30.8.2008, 13:38
|- - AD   небольшой вопрос. А как сделать с помощью регэкспа...   1.9.2008, 12:38
- - Litkevich Yuriy   AD, всмысле инверсии чтоли? если да, то так [^...]...   1.9.2008, 12:45
- - Tonal   Что такое "последовательность символов, не пр...   1.9.2008, 12:48
|- - AD   Цитата(Tonal @ 1.9.2008, 13:48) Что такое...   1.9.2008, 12:51
- - Tonal   Ты опять криво выразился. Прочитай что-нибудь про ...   1.9.2008, 13:31
|- - AD   Практически сделал, осталось добиться последнего. ...   1.9.2008, 15:57
- - Litkevich Yuriy   Цитата(AD @ 1.9.2008, 19:57) , а все сота...   1.9.2008, 16:34
- - AD   Извините, забыл сразу выложить код, как я реализов...   10.9.2008, 15:30


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 14.7.2025, 10:07