Здравствуйте, гость ( Вход | Регистрация )
Rosster | Дата 1.9.2011, 13:08 |
Нашел способ, но тоже не идеальный, если учитывать, что расположение 3 групп разное. Если оно статичное, то считаю лучшее решение (может кому пригодится):
Если допустим будет строка "01.02.03г. По Красногвардейскому р-ну г.Санкт-Петербург 1234567890123" то нужно просто поменять местами в регулярном выражении на "([0-9]{2}\\.[0-9]{2}\\.[0-9]{2,4})(?:\.*)([0-9]{6,13})" Все) Тему можно закрывать, решение найдено, спасибо всем. |
|
RazrFalcon | Дата 1.9.2011, 12:10 |
Худший, наверное, способ:
Вывод:
UPD: поправил выражения. |
|
Rosster | Дата 1.9.2011, 11:26 |
Если позиции элементов всегда одинаковы, то логично же, читать первый блок до первого пробела.. читать второй блок до второго и все остальное. Эти три группы могут быть в разном порядке, в этом вся и сложность. Просто надо как-то написать выборку 13 цифр и меньше, даты, и остальное что есть в строке |
|
silver47 | Дата 1.9.2011, 10:35 |
Если позиции элементов всегда одинаковы, то логично же, читать первый блок до первого пробела.. читать второй блок до второго и все остальное. | |
Rosster | Дата 1.9.2011, 9:42 |
Следующая проблема: Есть QString str = "1234567890123 01.02.03г. По Красногвардейскому р-ну г.Санкт-Петербург"; мне нужно выдрать 3 группы слов: 1)1234567890123 - оно может иметь <=13 цифр 2)01.02.03 - год может иметь и 4 цифры 3)остальная часть после даты. Пытаюсь реализовать это с помощью QRegExp и QString::split() и QString::section(). Никак не могу отловить правильную комбинацию. Странно что в QString есть contains(), но нету выборки из текста заданных QRegExp выражением. Буду благодарен за содействие в решении проблемы) |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.3.2024, 17:30 |