Суть проблемы: Написал я регулярное выражение, которое ищет '{' и оглядывается назад, чтобы посмотреть, нет ли там признака коментариев, и когда оно находит данный символ, которому не предшествует коментарий, оно заменяет его на другую последовательность символов. Но увы, оно не работает уже который час. Будьте добры, друзья, подскажите, где ошибся:
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;
}
Не думаю, что у Вас получится сделать это с регулярными выражениями, т.к. PCRE не поддерживает negative lookbehind произвольного размера, а как по другому тут сделать не совсем понятно. С другой стороны, Ваша задача решается элементарно другим способом: Вы разделяете текст на строки и в каждой строке ищете {, если находите, то ищете в этой строке //(или другой символ комментариев): если есть, значит пропускаете, если нет — заменяете.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости