Выборка по ключевым словам |
Здравствуйте, гость ( Вход | Регистрация )
Выборка по ключевым словам |
Гость_Ponter_* |
3.3.2010, 12:59
Сообщение
#1
|
Гости |
Всем привет, подскажите, пожалуйста, как в строке, например:
"Введите в поле код <pod>kod_value</pod> для <pod>two_kod</pod> сохранения" Выдрать отдельно два QStringList ("Введите в поле код ", "для" "сохранения") и ("kod_value" и "two_kod") ? Пытался сделать через регулярное выражение и split, но не получается...есть идеи какие-нибудь? |
|
|
Litkevich Yuriy |
3.3.2010, 13:34
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Я думаю, тут в два захода надо делать.
Такую регулярку взять за основу: <pod>.*</pod> сделать её не жадной. Эта регулярка будет соответствовать: <pod>kod_value</pod> <pod>two_kod</pod> И её использовать в функции split. Соответственно получишь: Введите в поле код для сохранения А за второй заход выделять то, что внутри тэгов |
|
|
Гость_Ponter_* |
3.3.2010, 14:16
Сообщение
#3
|
Гости |
<pod>.*</pod> сделать её не жадной. Эта регулярка будет соответствовать: <pod>kod_value</pod> <pod>two_kod</pod> И её использовать в функции split. Пишу QStringList txtList = txt_text->toPlainText().split(QRegExp("<pod>*.</pod>")); получается txtList имеет один элемент, это вся строка которая рассматривается,не выходит:( |
|
|
kwisp |
3.3.2010, 14:24
Сообщение
#4
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
можно еще воспользоваться
QRegExp::cap(int n) следующим образом, к примеру:
|
|
|
Гость_Ponter_* |
3.3.2010, 14:24
Сообщение
#5
|
Гости |
Ошибся. Вот так написал:
QStringList txtList = txt_text->toPlainText().split(QRegExp("<var>.*</var>")); и вывелось "Введите в поле код "и все |
|
|
Гость_Ponter_* |
3.3.2010, 14:37
Сообщение
#6
|
Гости |
kwisp, это не подходит, потому что этих <pod> может быть сколько угодно.
Можете подсказать регулярные выражения для обоих случаев для выборки простого текста и внутри тегов. <pod>.*</pod> для первого случая не подходит |
|
|
Litkevich Yuriy |
3.3.2010, 15:39
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
kwisp |
3.3.2010, 16:02
Сообщение
#8
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
ясно.
я пример привел, относительно первого поста. выже не сказали что <pod> может быть сколько угодно. вам уже подсказали QRegExp::setMinimal() kwisp, это не подходит, потому что этих <pod> может быть сколько угодно. подойдёт с небольшим изменением. описываю регулярку словами, скорее всего в коде ошибусь. всё от начала строки или "</pod>" до "<pod>" затем всё до конца строки либо "</pod>"
всё равно в регулярке "ошибся" последнее слово не схавает. минутку можно так попробовать
если начало строки не <pod> то нечетные элементы списка это элементы первого списка, четные это элементы второго. || так
Сообщение отредактировал kwisp - 4.3.2010, 9:27 |
|
|
Текстовая версия | Сейчас: 22.11.2024, 21:59 |