Название: [РЕШЕНО] QRegExp и QLineEdit Отправлено: psk07 от Сентябрь 23, 2019, 12:57 Всем привет. Помогите люди добрые с QRexExp.
Стоит нестандартная задача, надо сделать поисковое окно, в котором 50 QLineEdit. 10 строк по 5 полей ввода. В каждой строке поля ввода между собой соединены, как значение &, а сами строки между собой соединены, как значения |. Помогите пожалуй сделать рабочий QRegExp. В моем случае regExp.indexIn() проверяет QString на соответствие поисковому запросу. На сайте regex101 данный вариант работает: ^.*(((?=.*Line1)(?=.*Line2)(?=.*Line3)(?=.*Line4)(?=.*Line5))|((?=.*Line6)(?=.*Line7)(?=.*Line8)(?=.*Line9)(?=.*Line10))|((?=.*Line11)(?=.*Line12)(?=.*Line13)(?=.*Line14)(?=.*Line15))|((?=.*Line16)(?=.*Line17)(?=.*Line18)(?=.*Line19)(?=.*Line20))|((?=.*Line21)(?=.Line22*)(?=.*Line23)(?=.*Line24)(?=.*Line25))|((?=.*Line26)(?=.*Line27)(?=.*Line28)(?=.*Line29)(?=.*Line30))|((?=.*Line31)(?=.*Line32)(?=.Line33)(?=.Line34)(?=.*Line35))|((?=.*Line36)(?=.*Line37)(?=.*Line38)(?=.*Line39)(?=.*Line40))|((?=.*Line41)(?=.*Line42)(?=.*Line43)(?=.*Line44)(?=.*Line45))|((?=.*Line46)(?=.*Line47)(?=.48)(?=.*49)(?=.*50))).*$ Если я правильно понимаю, то в QRegExp беды с точкой, то тогда чем заменить ленивый поиск .* ? Заранее всем спасибо. Название: Re: QRegExp и QLineEdit Отправлено: qate от Сентябрь 23, 2019, 15:47 В эпоху интерфейсов с одной кнопкой, 50 QLineEdit-ов смотрятся очень приятно )
QRegExp::setMinimal ? Название: Re: QRegExp и QLineEdit Отправлено: kambala от Сентябрь 23, 2019, 20:15 смущает ?= — может там должно быть ?: ? да и QRexExp, в отличие от QRegularExpression, не поддерживает ?= (lookahead).
а почему нельзя просто тупо склеить содержимое полей ввода одной строки? Line1Line2Line3Line4Line5. Тогда искомое выражение будет (?:Line1Line2Line3Line4Line5)|(?:Line6Line7Line8Line9Line10)|... Или каждое поле ввода матчит лишь часть строки? В таком случае поставить .* между ними (по краям внутри скобки не надо). Название: Re: QRegExp и QLineEdit Отправлено: psk07 от Сентябрь 24, 2019, 09:15 смущает ?= — может там должно быть ?: ? да и QRexExp, в отличие от QRegularExpression, не поддерживает ?= (lookahead). а почему нельзя просто тупо склеить содержимое полей ввода одной строки? Line1Line2Line3Line4Line5. Тогда искомое выражение будет (?:Line1Line2Line3Line4Line5)|(?:Line6Line7Line8Line9Line10)|... Или каждое поле ввода матчит лишь часть строки? В таком случае поставить .* между ними (по краям внутри скобки не надо). Если все 5 значений находятся в строке, до данная строка идёт на отображение в QListView. а) В данном варианте склейки есть чувствительность поиска к порядку ввода данных Line1Line2Line3Line4Line5, как можно решить данную проблему? б) Такую же проблему заметил с поиском по значениям или. Поля поиска должны соответствовать своему положению в строке, L6-L10 не может быть раньше L1-L5. в) Каждое поле ввода матчит часть строки. Правильно я вас понял насчёт вставки .* ? (?:.*Line1.*Line2.*Line3.*Line4.*Line5)|(?:.*Line6.*Line7.*Line8.*Line9.*Line10)|... Заранее спасибо. Название: Re: QRegExp и QLineEdit Отправлено: psk07 от Сентябрь 24, 2019, 09:16 В эпоху интерфейсов с одной кнопкой, 50 QLineEdit-ов смотрятся очень приятно ) Опробую сегодня, спасибо за направление, там же нашёл и пилюли для борьбы с регистром.QRegExp::setMinimal ? Название: Re: QRegExp и QLineEdit Отправлено: kambala от Сентябрь 24, 2019, 11:31 а) путем создания 5!=120 перестановок для каждой строки: 12345, 12354, ...
б) если склеивание через | работает не так, как хотелось бы, то можно просто перебирать строки в цикле по очереди: выход из цикла при совпадении в) .* перед ?: не надо (это сразу так и работает) хитрый, конечно, функционал... :) Название: Re: QRegExp и QLineEdit Отправлено: psk07 от Сентябрь 24, 2019, 15:18 а) путем создания 5!=120 перестановок для каждой строки: 12345, 12354, ... Не совсем понял насчёт пункта а, буду благодарен за набросок.)б) если склеивание через | работает не так, как хотелось бы, то можно просто перебирать строки в цикле по очереди: выход из цикла при совпадении в) .* перед ?: не надо (это сразу так и работает) хитрый, конечно, функционал... :) По поводу пункта в, по мистическим причинам работает только с .* перед ?: Второй день уже прыгаю с бубном вокруг этого функционала) Название: Re: QRegExp и QLineEdit Отправлено: kambala от Сентябрь 24, 2019, 16:38 а) если интересует абсолютно произвольный порядок пяти строк, то нужно рассмотреть все возможные перестановки пяти элементов, их количество равно 5!=120. Пример для трех, 3!=6: 123, 132, 312, 321, 231, 213. Все эти варианты склеить через |, ну либо циклом аналогично пункту б)
Название: Re: QRegExp и QLineEdit Отправлено: psk07 от Сентябрь 25, 2019, 07:55 а) если интересует абсолютно произвольный порядок пяти строк, то нужно рассмотреть все возможные перестановки пяти элементов, их количество равно 5!=120. Пример для трех, 3!=6: 123, 132, 312, 321, 231, 213. Все эти варианты склеить через |, ну либо циклом аналогично пункту б) а)Методом проб и ошибок достиг нужного результата с Line№Line№Line№Line№Line№, вот таким результатом. (?=.*Line№)(?=.*Line№)(?=.*Line№)(?=.*Line№)(?=.*Line№), но перестали работать значения или.(?=.*Line№)(?=.*Line№)(?=.*Line№)(?=.*Line№)(?=.*Line№)|(?=.*Line№)(?=.*Line№)(?=.*Line№)(?=.*Line№)(?=.*Line№)... Подскажите пожалуйста, как можно решить данную проблему? б) Дальше у меня задача, через QCombobox дать пользователю возможность выбора подсветки фона для каждого .*Line№.*Line№.*Line№.*Line№.*Line№. Буду рад любым интересным соображениям по реализации.) Название: Re: QRegExp и QLineEdit Отправлено: kambala от Сентябрь 25, 2019, 11:52 а) вместо или можно цикл
б) не очень понятно чего хочется добиться :) вставить по комбобоксу в строку, в котором выбирать цвет строки? Название: Re: QRegExp и QLineEdit Отправлено: psk07 от Сентябрь 25, 2019, 12:32 а) вместо или можно цикл а) на той же мысли остановился)б) не очень понятно чего хочется добиться :) вставить по комбобоксу в строку, в котором выбирать цвет строки? б) каждой строке поиска пользователь может задавать цвет фона найденным совпадениям. Название: Re: QRegExp и QLineEdit Отправлено: kambala от Сентябрь 25, 2019, 13:55 Цитировать вставить по комбобоксу в строку, в котором выбирать цвет строки это не подходит? либо я все равно не понял требования...Название: Re: QRegExp и QLineEdit Отправлено: psk07 от Сентябрь 25, 2019, 14:26 Цитировать вставить по комбобоксу в строку, в котором выбирать цвет строки это не подходит? либо я все равно не понял требования... |