Привет всем, писал распознавалку номеров, сделал, спеки динамично поменяли и теперь мне нужно найти не просто нужный нужный номер, а нужный номер +20 символов перед ним, искал номера вот так:
В этом коде зовется regex_callback столько раз сколько найдено номеров и соответственно я их перекладываю в список, а как искать позиции в тексте с которых начинаются номера, чтобы мне потом можно было отступить 20 символов от того места где начинается номер?
Здравствуйте, agg, Вы писали:
agg>Привет всем, писал распознавалку номеров, сделал, спеки динамично поменяли и теперь мне нужно найти не просто нужный нужный номер, а нужный номер +20 символов перед ним, искал номера вот так:
можно использовать группировку, например, для регэкспа:
agg>В этом коде зовется regex_callback столько раз сколько найдено номеров и соответственно я их перекладываю в список, а как искать позиции в тексте с которых начинаются номера, чтобы мне потом можно было отступить 20 символов от того места где начинается номер?
учтите, что в группе с номером 0 лежит вся строка, а начиная с 1, подгруппы.
Здравствуйте, agg, Вы писали:
agg>Здравствуйте, XuMuK, Вы писали:
XMK>>учтите, что в группе с номером 0 лежит вся строка, а начиная с 1, подгруппы.
agg>Спасибо за ответ, но честно говоря я регулярными выражениями занялся впервые поэтому ваш ответ мне мало что сказал
если в кратце, то все что внутри круглых в регэкспе называется группой, и может быть получено как отдельная строка, т.е. в вашем регэкспе достаточно взять то что считается номером в скобки и потом получить группу с нужным номером (если группа только одна, то нужна группа номер 1). подробнее можно почитать в документации на тот же boost::regex.
PS напишите регэксп которым пользуетесь, думаю с ним будет намного проще понять что вам надо.
Здравствуйте, agg, Вы писали:
agg>Привет всем, писал распознавалку номеров, сделал, спеки динамично поменяли и теперь мне нужно найти не просто нужный нужный номер, а нужный номер +20 символов перед ним, искал номера вот так:
Где текст самого регекспа-то?
Вкратце, если у тебя есть регэксп "X", который матчит номер, то тебе нужен регэксп ".{20}X", т.е. "20 любых символов а потом Х".
Здравствуйте, jazzer, Вы писали:
J>Где текст самого регекспа-то?
J>Вкратце, если у тебя есть регэксп "X", который матчит номер, то тебе нужен регэксп ".{20}X", т.е. "20 любых символов а потом Х".
Здравствуйте, agg, Вы писали:
agg>Здравствуйте, jazzer, Вы писали:
J>>Где текст самого регекспа-то?
J>>Вкратце, если у тебя есть регэксп "X", который матчит номер, то тебе нужен регэксп ".{20}X", т.е. "20 любых символов а потом Х".
agg>Вот регэксп: agg>
agg>Вот такой замороченный регэксп, там просто через или 8 нужных форматов номеров
в вашем случае весь регэксп является подгруппой, т.к. заключен в скобки.
полагаю надо делать так:
const str re = L".{20}" + fu; // use 're' instead of 'fu'
....
static bool regex_callback(const boost::match_results<str::const_iterator>& what)
{
lpn.push_back(what.str(1)); // 1 - number of the match groupreturn true;
}
Здравствуйте, agg, Вы писали:
agg>Здравствуйте, jazzer, Вы писали:
J>>Где текст самого регекспа-то?
J>>Вкратце, если у тебя есть регэксп "X", который матчит номер, то тебе нужен регэксп ".{20}X", т.е. "20 любых символов а потом Х".
agg>Вот регэксп: agg>