Não é possível usar 'repete' nas lookaheads para boost: regex?
Pergunta
Eu estou tentando extrair algumas variáveis ??no meu código C ++ aninhados em blocos
por exemplo, se eu tiver
DEL_TYPE_NONE,
DEL_TYPE_DONE,
DEL_TYPE_WAIT,
Eu gostaria de corresponder
"DEL_TYPE_NONE"
"DEL_TYPE_DONE"
"DEL_TYPE_WAIT"
Eu fiz o meu padrão como esta,
std :: pat string ( "? (<= ^ [\\ t]) [A-Z0-9 _] + (=, $)?");
mas estou continuo recebendo mensagem de erro quando compilador é tyring para ler o meu padrão.
Eu não entendo, mas não há problema com ? marca após \\ t
Se me livrar? marcar, em seguida, ele compila e encontrará apenas "DEL_TYPE_WAIT"
por que não posso usar Repete no Lookahead? plz me ajudar eu estou totalmente perdido aqui; (
obrigado
Solução
Eu encontrei a resposta. Não a partir desta manual do
lookbehind
(? <= Padrão) consome zero caracteres, somente se padrão pode ser combinado contra os caracteres que precedem o posição atual (padrão deve ser de comprimento fixo).
Outras dicas
Apenas baseado em POSIX eu diria que seu regex é "DEL_TYPE _ ([ND] ONE | ESPERA),"
Isso é apenas com base no que você listou acima. Eu diria que o problema real é com você dupla escapar do t; você provavelmente deve fazer [\ t \ s] * uma vez que não pode ser apenas zero ou um guia / espaço.