Название: [РЕШЕНО] Регулярные Выражения Из Целого Слова Отправлено: woka от Апрель 12, 2012, 18:55 скажу кратко о моей задаче: я свой язык разметки должен открыть в своём браузере. вообщем я преобразовываю свой файл в html и открываю его.
нужно сделать так чтобы регулярное выражение искало всё слово(слова), а не набор букв. например есть текст в стринге {work working [work] worked} и мне надо чтобы она увидев [work] заменила на <work> и не больше. помогите составить такое выражение. извиняюсь что поднял ещё раз эту тему, но ничего подходящего не нашёл Название: Re: Регулярные Выражения Из Целого Слова Отправлено: V1KT0P от Апрель 12, 2012, 19:01 скажу кратко о моей задаче: я свой язык разметки должен открыть в своём браузере. вообщем я преобразовываю свой файл в html и открываю его. нужно сделать так чтобы регулярное выражение искало всё слово(слова), а не набор букв. например есть текст в стринге {work working [work] worked} и мне надо чтобы она увидев [work] заменила на <work> и не больше. помогите составить такое выражение. извиняюсь что поднял ещё раз эту тему, но ничего подходящего не нашёл Код Не? Название: Re: Регулярные Выражения Из Целого Слова Отправлено: BuRn от Апрель 12, 2012, 21:44 Простите . а зачем тут Qt? Не проще ли распарсить с помощью скрипта bash и регулярок ?
Название: Re: Регулярные Выражения Из Целого Слова Отправлено: woka от Апрель 12, 2012, 23:35 я делаю реализацию на qt. я под виндовс начал писать, да и знания bash не велики, только простейшие операции. да и мне надо делать всё своё.
по поводу replace идея классная и работает, но что делать если внутри тега есть какая то информация? ссылка например. а закрывающиеся теги? Название: Re: Регулярные Выражения Из Целого Слова Отправлено: BuRn от Апрель 13, 2012, 06:53 я делаю реализацию на qt. я под виндовс начал писать, да и знания bash не велики, только простейшие операции. да и мне надо делать всё своё. регулярные выражения тебе в помощь по поводу replace идея классная и работает, но что делать если внутри тега есть какая то информация? ссылка например. а закрывающиеся теги? Название: Re: Регулярные Выражения Из Целого Слова Отправлено: Bepec от Апрель 13, 2012, 07:05 Burn обрати внимание на раздел форума, где тема. Там есть надпись Qt ;)
Регулярки, или же метода QString. Название: Re: Регулярные Выражения Из Целого Слова Отправлено: woka от Апрель 13, 2012, 14:04 Регулярки, или же метода QString. Название: Re: Регулярные Выражения Из Целого Слова Отправлено: Bepec от Апрель 13, 2012, 14:45 1) Открываешь гугль и ищешь "регулярные выражения".
2) Открываешь Assistant, смотришь класс QRegExp. Название: Re: Регулярные Выражения Из Целого Слова Отправлено: V1KT0P от Апрель 13, 2012, 14:45 Регулярки, или же метода QString. Название: Re: Регулярные Выражения Из Целого Слова Отправлено: woka от Апрель 13, 2012, 16:58 нет. это я к примеру приводил.пример с wiki разметкой
[[http://www.prog.org.ru/ prog]] - <a href="http://www.prog.org.ru/">prog</a> если "[[" до пробела запоминает и вставляем после "<a href="" удаляя "[[" и припивываем "">" после её всё то что после пробела да "]]" , а после пишем "</a>" Название: Re: Регулярные Выражения Из Целого Слова Отправлено: alexis031182 от Апрель 13, 2012, 17:27 Код: QString txt = "[[http://www.prog.org.ru/ prog]]"; Как-то так... Название: Re: Регулярные Выражения Из Целого Слова Отправлено: woka от Апрель 14, 2012, 19:24 Код: QString txt = "[[http://www.prog.org.ru/ prog]]"; Как-то так... есть ещё один вопрос. например когда большой файл обрабатывается как поступить, когда мне надо на то же самое место вставить откуда и было взято выражение. Название: Re: Регулярные Выражения Из Целого Слова Отправлено: alexis031182 от Апрель 15, 2012, 11:05 спасибо. по твоему примеру я начал свои выражения делать. в qt есть пример regexp там можно тестировать свои выражения. QRegExp::indexIn() возвращает позицию совпадения. Для большого кол-ва однотипных проверок лучше использовать QRegExpValidator.есть ещё один вопрос. например когда большой файл обрабатывается как поступить, когда мне надо на то же самое место вставить откуда и было взято выражение. Название: Re: Регулярные Выражения Из Целого Слова Отправлено: woka от Апрель 15, 2012, 15:58 подскажи какими методами это можно сделать. что то в справке ничего подходящего невижу
Название: Re: Регулярные Выражения Из Целого Слова Отправлено: kambala от Апрель 15, 2012, 16:33 записывай в другой файл, а потом заменяй им исходный. или записывай всё в память, а потом сразу сохраняй в файл.
Название: Re: Регулярные Выражения Из Целого Слова Отправлено: alexis031182 от Апрель 15, 2012, 16:38 Виноват, QRegExpValidator не для твоего случая. Спутал с другим классом.
А что касаемо замены в строке с использованием QRegExp, то там примерно такой алгоритм может быть: Код: QString file_data = ТЕКСТ_ДЛЯ_ПАРСИНГА; Название: Re: Регулярные Выражения Из Целого Слова Отправлено: woka от Апрель 15, 2012, 18:36 что то я совсем перестал понимать. если у нас регулярное выражение "\\'\\'\\'(.+)\\'\\'\\'", а текст '''aaa''' u '''bbb''', то на выходе мы получаем capture aaa''' u '''bbb. подскажите как сделать чтобы она заканчивался поиск при первом нахождении или что нибудь подобное. чтобы в результате было только ааа чтобы с этим можно было работать.
Название: Re: Регулярные Выражения Из Целого Слова Отправлено: kambala от Апрель 15, 2012, 19:10 Код
Название: Re: Регулярные Выражения Из Целого Слова Отправлено: woka от Апрель 15, 2012, 21:01 Код: QString file_data = ТЕКСТ_ДЛЯ_ПАРСИНГА; Код: QRegExp b("\\'\\'\\'(.+)\\'\\'\\'"); Название: Re: Регулярные Выражения Из Целого Слова Отправлено: woka от Апрель 15, 2012, 21:09 Виноват, QRegExpValidator не для твоего случая. Спутал с другим классом. у тебя как я понял выставляется позиция в цикле и при замене на этой позиции он и заменяет. как поправить код не знаю. хотя интересноА что касаемо замены в строке с использованием QRegExp, то там примерно такой алгоритм может быть: Код: QString file_data = ТЕКСТ_ДЛЯ_ПАРСИНГА; Название: Re: Регулярные Выражения Из Целого Слова Отправлено: alexis031182 от Апрель 15, 2012, 23:02 Я не сообразил просто, что если replace делать сразу в тексте, то как бы позиция получается и не нужна, потому что первое попавшееся совпадение будет тут же заменено на новое значение, на которое reg_exp уже не сработает. Поэтому твой вариант лучше :)
Единственное, от отслеживания текущей позиции можно выиграть в скорости, т.к. reg_exp при повторном заходе не будет смотреть весь текст с самого начала. Но это уже детали конечно, и раз не работает мой вариант, то похоже где-то в нём закрался ещё один косяк :) Название: Re: Регулярные Выражения Из Целого Слова Отправлено: woka от Апрель 16, 2012, 14:28 спасибо всем кто помог. благодоря вам научился пользоваться регулярными выражениями. вопрос считаю в полной мере решённым.
P.S. для тех кто пытается разобраться с регулярками: в демках qt есть пример RegExp с помощью которого можно протестировать свои и понять что можно делать и как |