Регулярные выражения в qt

208
26 ноября 2016, 19:06

Суть проблемы: Написал я регулярное выражение, которое ищет '{' и оглядывается назад, чтобы посмотреть, нет ли там признака коментариев, и когда оно находит данный символ, которому не предшествует коментарий, оно заменяет его на другую последовательность символов. Но увы, оно не работает уже который час. Будьте добры, друзья, подскажите, где ошибся:

    while (start >= 0 && end >=0) {
        start = text.indexOf("\n", start);
        end  = text.indexOf(QRegExp("^.*[{](?!=[//]|[/*]|[*]))"),start);
        end2  = text.indexOf(QRegExp("^.*[}](?!=[//]|[/*]|[*]))"), start);
        if (end < end2) {
            text.replace(end,"\n{\n");
        }
        else  text.replace(end2,"\n}\n");
        ++start;
    }

допустим есть текст, вида:

//dfsdkfj ksjdfksjdf {  <- этот символ должен быть пропущен
public SystemBlock()
{  <- этот должен быть найден
    this.producer = "none";
    this.motherBoard = "none";
    this.processor = "none";
    this.ram = "none";
    this.gpu = "none";
    this.price = 0;
    this.eventSupport = null;
}
Answer 1

Не думаю, что у Вас получится сделать это с регулярными выражениями, т.к. PCRE не поддерживает negative lookbehind произвольного размера, а как по другому тут сделать не совсем понятно. С другой стороны, Ваша задача решается элементарно другим способом: Вы разделяете текст на строки и в каждой строке ищете {, если находите, то ищете в этой строке //(или другой символ комментариев): если есть, значит пропускаете, если нет — заменяете.

READ ALSO
Segmentation fault при разборе аргументов main() c++ [закрыто]

Segmentation fault при разборе аргументов main() c++ [закрыто]

ЗдравствуйтеМне нужно определить аргументы командной строки и исходя из полученых команд проделать некие действия

164
Не могу разобраться с vector &lt; unque_ptr &lt;T&gt;&gt;

Не могу разобраться с vector < unque_ptr <T>>

Есть класс, в котором есть поле вектора из unique_ptr (Animals - тоже класс), а так же методы чтения и записи в файл этого вектора классаВот фрагмент...

180
Как остановить демон?

Как остановить демон?

У меня никак не получается остановить работу демона, что я и пытаюсь сделать с помощью параметра stopПодскажите, как лучше это сделать? И почему...

327
Shlobj.h актуален? [закрыто]

Shlobj.h актуален? [закрыто]

Здравствуйте! Пишу простой проводник и столкнулся с такой библиотекойВопрос такой: для написания проводника ею лучше пользоваться? И для...

185