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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top