Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Синтаксис регулярных выражений в C++


Автор: Rorian 3.2.2015, 05:05
Помогите пожалуйста...

Исходный текст - "Miguel_Rivero[10]: {FFCD00}текст" преобразуется в - "тест 10" засчет обрабочика:

Код
regexrx("^\\w+\\[(\\d+)\\]:\\s*\\{FFCD00\\}(.*)$");


Нужно сделать так, чтобы этот исходный тест - "[R] Управляющий СМИ Miguel_Rivero[26]: Текст" преобразовался в - "Текст 26"

user posted image
user posted image
user posted image

Автор: xvr 3.2.2015, 15:21
Во первых - в С++ нет регулярных выражений. То, что у вас на картинке - boost
Во вторых - какие части в вашем Мигуэле Реверо должны быть такие, как написанно, а какие могут отличаться?
Если брать один в один, то это будет "^\\[R\\] Управляющий СМИ Miguel_Rivero\\[(\\d+)\\]: (\\w+)$" ну и поля с данными будут наоборот.

Автор: disputant 5.2.2015, 20:16
Цитата(xvr @ 3.2.2015,  15:21)
Во первых - в С++ нет регулярных выражений.

Ой.

Тогда с тем же основанием надо говорить, что в C++ нет vector, string и маасы прочих вещей?

Автор: JackYF 5.2.2015, 22:43
Цитата(xvr @  3.2.2015,  14:21 Найти цитируемый пост)
в С++ нет регулярных выражений

В С++11 в некотором виде есть.

Автор: baldina 6.2.2015, 00:03
Цитата(JackYF @  5.2.2015,  22:43 Найти цитируемый пост)
В С++11 в некотором виде есть. 

собственно в таком как у ТС)))

Код

regex match(".*\\[(\\d+)\\]:\\s*(\\w+)");
string replace = "$2 $1";
string result = regex_replace (source, match , replace);

Автор: xvr 6.2.2015, 14:38
Цитата(baldina @  6.2.2015,  00:03 Найти цитируемый пост)
собственно в таком как у ТС)))

Посыпаю голову пеплом - у ТС регулярки из стандартной библиотеки (судя по #include <regex>). Меня смутило наличие у ТС еще и boost'а впридачу.

Автор: Romikgy 6.2.2015, 15:25
Код

\w+\[(\d+)\]:\s*(\{FFCD00\})?(.*)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)