Russian Qt Forum
Ноябрь 26, 2024, 01:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Регулярные Выражения Из Целого Слова  (Прочитано 11852 раз)
woka
Гость
« : Апрель 12, 2012, 18:55 »

скажу кратко о моей задаче: я свой язык разметки должен открыть в своём браузере. вообщем я преобразовываю свой файл в html и открываю его.

нужно сделать так чтобы регулярное выражение искало всё слово(слова), а не набор букв. например есть текст в стринге {work working [work] worked} и мне надо чтобы она увидев [work] заменила на <work> и не больше. помогите составить такое выражение.  

извиняюсь что поднял ещё раз эту тему, но ничего подходящего не нашёл
« Последнее редактирование: Апрель 17, 2012, 22:20 от woka » Записан
V1KT0P
Гость
« Ответ #1 : Апрель 12, 2012, 19:01 »

скажу кратко о моей задаче: я свой язык разметки должен открыть в своём браузере. вообщем я преобразовываю свой файл в html и открываю его.

нужно сделать так чтобы регулярное выражение искало всё слово(слова), а не набор букв. например есть текст в стринге {work working [work] worked} и мне надо чтобы она увидев [work] заменила на <work> и не больше. помогите составить такое выражение. 

извиняюсь что поднял ещё раз эту тему, но ничего подходящего не нашёл
Код
C++ (Qt)
QString::replace("[work]", "<work>");
Не?
Записан
BuRn
Гость
« Ответ #2 : Апрель 12, 2012, 21:44 »

Простите . а зачем тут Qt? Не проще ли распарсить с помощью скрипта bash и регулярок ?
Записан
woka
Гость
« Ответ #3 : Апрель 12, 2012, 23:35 »

я делаю реализацию на qt. я под виндовс начал писать, да и знания bash не велики, только простейшие операции. да и мне надо делать всё своё.
по поводу replace идея классная и работает, но что делать если внутри тега есть какая то информация? ссылка например. а закрывающиеся теги?
Записан
BuRn
Гость
« Ответ #4 : Апрель 13, 2012, 06:53 »

я делаю реализацию на qt. я под виндовс начал писать, да и знания bash не велики, только простейшие операции. да и мне надо делать всё своё.
по поводу replace идея классная и работает, но что делать если внутри тега есть какая то информация? ссылка например. а закрывающиеся теги?
регулярные выражения тебе в помощь
Записан
Bepec
Гость
« Ответ #5 : Апрель 13, 2012, 07:05 »

Burn обрати внимание на раздел форума, где тема. Там есть надпись Qt Подмигивающий

Регулярки, или же метода QString.
Записан
woka
Гость
« Ответ #6 : Апрель 13, 2012, 14:04 »


Регулярки, или же метода QString.
так я чего здесь и пишу, чтобы вы помогли и подсказали как
Записан
Bepec
Гость
« Ответ #7 : Апрель 13, 2012, 14:45 »

1) Открываешь гугль и ищешь "регулярные выражения".

2) Открываешь Assistant, смотришь класс QRegExp.
Записан
V1KT0P
Гость
« Ответ #8 : Апрель 13, 2012, 14:45 »


Регулярки, или же метода QString.
так я чего здесь и пишу, чтобы вы помогли и подсказали как
Вообще я так понял тебе надо тупо все квадратные кавычки заменить на треугольные. Это делается одним проходом по всему тексту.
Записан
woka
Гость
« Ответ #9 : Апрель 13, 2012, 16:58 »

нет. это я к примеру приводил.пример с wiki разметкой
 [[http://www.prog.org.ru/ prog]]  -  <a href="http://www.prog.org.ru/">prog</a>
если "[[" до пробела запоминает и вставляем  после "<a href="" удаляя "[[" и припивываем "">" после её всё то что после пробела да "]]"
, а после пишем "</a>"
Записан
alexis031182
Гость
« Ответ #10 : Апрель 13, 2012, 17:27 »

Код:
QString txt = "[[http://www.prog.org.ru/ prog]]";

QRegExp reg_exp("\\[\\[(.+)\s+(.+)\\]\\]");
if(reg_exp.indexIn(txt) != -1) {
   QString res = "<a href=\"" + reg_exp.cap(1) + "\">" + reg_exp.cap(2) + "</a>";
}

Как-то так...
« Последнее редактирование: Апрель 13, 2012, 17:34 от alexis031182 » Записан
woka
Гость
« Ответ #11 : Апрель 14, 2012, 19:24 »

Код:
QString txt = "[[http://www.prog.org.ru/ prog]]";

QRegExp reg_exp("\\[\\[(.+)\s+(.+)\\]\\]");
if(reg_exp.indexIn(txt) != -1) {
   QString res = "<a href=\"" + reg_exp.cap(1) + "\">" + reg_exp.cap(2) + "</a>";
}

Как-то так...
спасибо. по твоему примеру я начал свои выражения делать. в qt есть пример regexp там можно тестировать свои выражения.
есть ещё один вопрос. например когда большой файл обрабатывается как поступить, когда мне надо на то же самое место вставить откуда и было взято выражение.
Записан
alexis031182
Гость
« Ответ #12 : Апрель 15, 2012, 11:05 »

спасибо. по твоему примеру я начал свои выражения делать. в qt есть пример regexp там можно тестировать свои выражения.
есть ещё один вопрос. например когда большой файл обрабатывается как поступить, когда мне надо на то же самое место вставить откуда и было взято выражение.
QRegExp::indexIn() возвращает позицию совпадения. Для большого кол-ва однотипных проверок лучше использовать QRegExpValidator.
Записан
woka
Гость
« Ответ #13 : Апрель 15, 2012, 15:58 »

подскажи какими методами это можно сделать. что то в справке ничего подходящего невижу
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #14 : Апрель 15, 2012, 16:33 »

записывай в другой файл, а потом заменяй им исходный. или записывай всё в память, а потом сразу сохраняй в файл.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.115 секунд. Запросов: 22.