| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > TRegEx |
| Автор: Валерия 24.11.2010, 17:57 | ||||||||
Использую TRegEx на C++ Buillder XE
С поиском разобралась - всё работает:
С заменой разобралась - всё так-же работает:
Но вот теперь хочу научиться находить нужное мне по шаблону. Т.е например есть текст "a1c" и мне нужно по шаблону "a(.*?)с" выделить то, что стоит между "a" и "b" т.е в данном случае это "1" Делаю так:
Но в ответ вместо "1" пишет "a1c". Что я делаю не так? |
| Автор: Alexeis 24.11.2010, 18:44 |
Потому что так задан шаблон. Если бы строка была типа "уйцкйц__a1c_ыуацйуа", то ответ был бы уже "a1c", а не вся строка. Раз определили, что символы a и с и все что между ними должно входить, значит будет входить. |
| Автор: Валерия 24.11.2010, 18:59 |
| Но ведь должно запомниться всё, что находиться между скобок? (По крайней мере так в php и perl) Или здесь такое нужно делать по другому? |
| Автор: Валерия 24.11.2010, 19:48 | ||
Возникает тогда вопрос: как сделать то что я хочу?) |
| Автор: Alexeis 24.11.2010, 21:39 |
| Валерия, скопировать из строки подстроку нужной длинны начиная с нужного символа. |
| Автор: Валерия 24.11.2010, 21:47 | ||
Это не вариант, т.к начало символа может быть всегда разное. Мне нужно именно что бы выполнялся поиск по регулярному выражению. В php и perl та регулярка, которую я написала, будет работать именно так как я захочу Я была бы очень рада, если бы мне кто-то показал на моём примере, как это сделать на С++ именно с этой либой. |
| Автор: Alexeis 24.11.2010, 22:01 |
| Валерия, значит попробовать другой вариант из буста. Он почти стандарт уже http://blog.alno.name/ru/2008/10/using-boost-regex |
| Автор: Валерия 24.11.2010, 22:11 | ||
Наше общение с Вами выглядит так, будто я пришла в магазин покупать туфли от Версаче, а Вы мне говорите "знаете, лучше купите кроссовки Аддидас". Я ведь попросила показать мне именно на моём примере, а в моём примере я не использую бустовые регулярки. Прошу не воспринимать как обиду |
| Автор: Alexeis 24.11.2010, 22:49 |
| Валерия, я пользовался этой либой, изучал доку вдоль и поперек. Извлекать фрагменты регулярки она не умеет, только целиком. Сам я после прохода такой регуляркой извлекал нужный мне кусок руками. Например, в вашем случае нужно копировать начиная с первого символа n - 2 символов, где n длина строки. |
| Автор: Валерия 24.11.2010, 23:15 |
| Неужели регулярка не может извлекать фрагмент? о_О Не дописали что-ли?) Дело в том что у меня количество символов всегда может быть разное, поэтому статично нельзя указать номера символов. А Boost нормально работает на Builder XE под Windows? Если я не ошибаюсь, это ведь никсовая библиотека. Если нормально дружит, можно ли сразу весь Boost установить, т.е что бы библиотеки, например, работы с потоками тоже сразу установились, а не ставить их по одной? |
| Автор: Alexeis 24.11.2010, 23:24 |
Начиная с версии 2009 поставляется специальная адаптированная версия для билдера. И с каждым апдейтом обновляется. Это кросплатформенная либа как и STL. |
| Автор: oldcode 25.11.2010, 18:48 | ||
1. Все с точностью до наоборот 2. Зря вы не обратили внимание на пост №2 здесь http://forum.vingrad.ru/forum/topic-315862.html. |
| Автор: QVO 14.2.2014, 23:00 | ||
Понимаю что тема старая, но автор не получил ответа на заданный вопрос.
|