Карманы в QRegExp |
Здравствуйте, гость ( Вход | Регистрация )
Карманы в QRegExp |
cupersuper |
5.5.2011, 20:04
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 5.5.2011 Пользователь №: 2654 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте,
Есть строка "Привет\r\nМир", нужно приобразовать её в "Привет.\r\nМир" Пробывал как-то так:
, может кто подскажет |
|
|
RazrFalcon |
5.5.2011, 22:05
Сообщение
#2
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
|
|
|
xls |
6.5.2011, 11:22
Сообщение
#3
|
Студент Группа: Участник Сообщений: 44 Регистрация: 6.9.2010 Пользователь №: 2013 Спасибо сказали: 7 раз(а) Репутация: 2 |
|
|
|
fedin.dmitriy |
8.5.2011, 4:50
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 8.5.2011 Пользователь №: 2660 Спасибо сказали: 0 раз(а) Репутация: 1 |
Все прикольно, только вот где указывается строка для поиска?
или второй пример уже более красивый
Оба прекрасно сработали. И когда в регулярном выражении задаются шаблоны, типа [a-z] или [A-Z] то они прекрасно срабатывают и на кириллицу тоже. |
|
|
cupersuper |
8.5.2011, 21:56
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 5.5.2011 Пользователь №: 2654 Спасибо сказали: 0 раз(а) Репутация: 0 |
Уточню, хотел покороче описать проблему, но походу не получилось,
к примеру, есть строка: Ехали медведи на велосипеде. А за ними кот задом наперёд А за ним комарики на воздушном шарике А за ними раки на хромой собаке. *** Вот оно, глупое счастье, с белыми окнами в сад! По пруду лебедем красным плавает тихо закат. В некоторых местах в пропущены точки в конце предложения (после "наперёд" и "шарике"), нужно определить конец предложения без точки: [а-я]\r\n[А-Я] И заменить на: [а-я].\r\n[А-Я] Вопрос кодировки не волнует, регулярное выражение вставляю в QString::fromLocal8Bit(). Если просто менять \r\n на .\r\n , то как-бы регулярка не нужна, т.к. данную замену надо производить не вконце каждого предложения, а только где подходит условие: "после строчной буквы - заглавная, без точки между ними". |
|
|
Litkevich Yuriy |
8.5.2011, 22:18
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
конец предложения - $
Следовательно и шаблон должен быть таким:
Пардон, продолжение не прочитал |
|
|
cupersuper |
8.5.2011, 22:23
Сообщение
#7
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 5.5.2011 Пользователь №: 2654 Спасибо сказали: 0 раз(а) Репутация: 0 |
Например:
необходимой замены не производит. Интересно, возможно ли использование карманов QRegExp.cap() в связке с QString.replace? to Litkevich Yuriy $, насколько я помню конец всей строки QString, а надо перевод строки и каретки, и опять же сохраняя условие |
|
|
Litkevich Yuriy |
9.5.2011, 6:53
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
cupersuper |
9.5.2011, 11:01
Сообщение
#9
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 5.5.2011 Пользователь №: 2654 Спасибо сказали: 0 раз(а) Репутация: 0 |
$, насколько я помню конец всей строки QString, а надо перевод строки и каретки, и опять же сохраняя условие просто конец строки (в зависимости от платформы - \r\n или \r или \n). Для регулярного выражения вообще "Конец всей строки QString" - неизвестный термин.Ок, спасибо, буду знать, только у меня проблема не с определением конца строки, а именно с использованием .cap в .replace Нужно условие: "после строчной буквы - заглавная, без точки между ними" заменить на "после строчной буквы - заглавная, с точкой между ними" а согласно выражению:
я получу, например в данной строке: Ехали медведи на велосипеде. А за ними кот задом наперёд. А за ним комарики на воздушном шарике. А за ними раки на хромой собаке. . ***. . Вот оно, глупое счастье, с белыми окнами в сад!. По пруду лебедем красным плавает тихо закат. четыре лишних точки (пометил зелёным). Вобщем без QRegExp::cap() или QRegExp::capturedTexts() необойтись, да и хочется научиться их использовать в связке с QString::replace() Я себе это представляю так:
но не работает( Собственно первый пример лучше подходил для моей ситуации txtString.replace( QRegExp("[а-я](\r\n)[А-Я]").cap(1),".\r\n" ); т.к. $, действует только в конце выражения |
|
|
cupersuper |
9.5.2011, 11:45
Сообщение
#10
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 5.5.2011 Пользователь №: 2654 Спасибо сказали: 0 раз(а) Репутация: 0 |
и он также не срабатывает
|
|
|
Текстовая версия | Сейчас: 27.11.2024, 8:00 |