crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Выборка по ключевым словам
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kwisp Дата 3.3.2010, 16:02
  ясно.
я пример привел, относительно первого поста. выже не сказали что <pod> может быть сколько угодно.
вам уже подсказали QRegExp::setMinimal()


Цитата(Гость_Ponter_* @ 3.3.2010, 14:37) *
kwisp, это не подходит, потому что этих <pod> может быть сколько угодно.

подойдёт с небольшим изменением.
описываю регулярку словами, скорее всего в коде ошибусь. всё от начала строки или "</pod>" до "<pod>" затем всё до конца строки либо "</pod>"
QRegExp reg("(^\|(</pod>))(.+)<pod>(.+)((</pod>)\|$)");
while((int pos = reg.indexIn(str,0))!=-1)  {
strL1.append(reg.cap(3));// не уверен на счет 3
strL2.append(reg.cap(4));
}

всё равно в регулярке "ошибся" последнее слово не схавает.
минутку

можно так попробовать
QRexExp reg("(<pod>)\|(</pod>)");
QStringList strL = str.split(reg);

если начало строки не <pod> то нечетные элементы списка это элементы первого списка, четные это элементы второго. :)
|| так
QRexExp reg("</?pod>");
QStringList strL = str.split(reg);
Litkevich Yuriy Дата 3.3.2010, 15:39
  Ponter
ты забыл:
Цитата(Litkevich Yuriy @ 3.3.2010, 16:34) *
сделать её не жадной.
Ponter Дата 3.3.2010, 14:37
  kwisp, это не подходит, потому что этих <pod> может быть сколько угодно.
Можете подсказать регулярные выражения для обоих случаев для выборки простого текста и внутри тегов.
<pod>.*</pod> для первого случая не подходит

Ponter Дата 3.3.2010, 14:24
  Ошибся. Вот так написал:
QStringList txtList = txt_text->toPlainText().split(QRegExp("<var>.*</var>"));
и вывелось "Введите в поле код "и все

kwisp Дата 3.3.2010, 14:24
  можно еще воспользоваться
QRegExp::cap(int n)
следующим образом, к примеру:
QRegExp reg("(.+)<pod>(.+)</pod>(.+)<pod>(.+)</pod>(.+)");
while((int pos = reg.indexIn(str,0))!=-1) {
strL1.append(reg.cap(1));
strL1.append(reg.cap(3));
strL1.append(reg.cap(5));
strL2.append(reg.cap(2));
strL2.append(reg.cap(4));
}
Ponter Дата 3.3.2010, 14:16
 
Цитата(Litkevich Yuriy @ 3.3.2010, 13:34) *
<pod>.*</pod>
сделать её не жадной.
Эта регулярка будет соответствовать:
<pod>kod_value</pod>
<pod>two_kod</pod>

И её использовать в функции split.

Пишу QStringList txtList = txt_text->toPlainText().split(QRegExp("<pod>*.</pod>"));
получается txtList имеет один элемент, это вся строка которая рассматривается,не выходит:(
Litkevich Yuriy Дата 3.3.2010, 13:34
  Я думаю, тут в два захода надо делать.
Такую регулярку взять за основу:
<pod>.*</pod>
сделать её не жадной.
Эта регулярка будет соответствовать:
<pod>kod_value</pod>
<pod>two_kod</pod>

И её использовать в функции split. Соответственно получишь:
Введите в поле код
для
сохранения


А за второй заход выделять то, что внутри тэгов
Ponter Дата 3.3.2010, 12:59
  Всем привет, подскажите, пожалуйста, как в строке, например:
"Введите в поле код <pod>kod_value</pod> для <pod>two_kod</pod> сохранения"
Выдрать отдельно два QStringList ("Введите в поле код ", "для" "сохранения") и ("kod_value" и "two_kod") ?
Пытался сделать через регулярное выражение и split, но не получается...есть идеи какие-нибудь?
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 9.7.2025, 8:08