Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Регулярные выражения

Автор: larry 20.6.2015, 8:53

Добрый день, форумчане.
Помогите пожалуйста разбить строку регулярным выражением.
Вот строка (координаты точек):
(50.556228,30.823051),(50.556190,30.822988),(50.556163,30.823030),(50.556201,30.
823089)

QStringList list;

list = str.split(QRegExp("\\d+.\\d+"));
    
foreach (QString coord, list)
{
        qDebug() << coord
}


Выражение правильно работает, т.е. удаляет все координаты :rolleyes: и оставляет только скобки и запятые. А как здесь задать, чтобы наоборот все было?
Пробовал в начале ставить ^, но не помагает. Подскажите плиз, как сделать. Нужно получить список координат. Спасибо.

поменял выражение на
QRegExp("[^\\d+.\\d+]")

но при выводе появляются какие-то пустые строки:
Раскрывающийся текст
""
"50.556228"
"30.823051"
""
""
"50.556190"
"30.822988"
""
""
"50.556163"
"30.823030"
""
""
"50.556201"
"30.823089"
""


Можно как-то сделать, чтобы пустых строк не было? Конечно не проблема написать
foreach (QString coord, list)
{
    if(!coord.isEmpty())
        qDebug() << coord;
}


но как-то мне кажется не правильно. Спасибо.

Автор: Iron Bug 21.6.2015, 9:05

у тебя регулярное выражение правильное, а метод неправильный. Split разделяет выражение по указанному разделителю. соответственно, сам разделитель вырезается. я не спец в Qt, но гугл с первого захода выдал некий метод search:
http://stackoverflow.com/questions/18374694/how-to-extract-a-list-of-substring-from-a-string-using-qt-regexp

Автор: larry 21.6.2015, 9:18

Iron Bug
Спасибо большое за подсказку, действительно не в ту сторону посмотрел. QRegExp::cap(int) это то, что нужно.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)