Разве нельзя использовать «Repeats» в заглядывании для boost: regex? - PullRequest
0 голосов
/ 12 февраля 2009

Я пытаюсь извлечь некоторые переменные из моего кода C ++, вложенного в блоки
например, если у меня есть

        DEL_TYPE_NONE,
            DEL_TYPE_DONE,
    DEL_TYPE_WAIT,

Я бы хотел соответствовать
"DEL_TYPE_NONE"
"DEL_TYPE_DONE"
"DEL_TYPE_WAIT"

Я сделал свой шаблон таким,
std :: string pat ("(? <= ^ [\\ t]?) [A-Z0-9 _] + (? =, $)"); </b>

но я получаю сообщение об ошибке, когда компилятор пытается прочитать мой шаблон.
Я не понимаю, но есть проблема с ? отметка после \\ t
Если я избавлюсь от? пометьте, затем скомпилируйте и найдите только "DEL_TYPE_WAIT"
почему я не могу использовать Repeats в Lookahead? Пожалуйста, помогите мне, я полностью потерян здесь; (

спасибо

Ответы [ 2 ]

2 голосов
/ 12 февраля 2009

Я нашел ответ. Нет из этого руководства

1008 * касательно предшествующего текста *

(? <= Pattern) потребляет ноль символов, только если шаблон может быть сопоставлен против символов, предшествующих текущая позиция <strong>(шаблон должен быть фиксированная длина).

0 голосов
/ 12 февраля 2009

Просто на основе POSIX я бы сказал, что ваше регулярное выражение "DEL_TYPE _ ([ND] ONE | WAIT)",

Это только на основании того, что вы перечислили выше. Я бы сказал, что настоящая проблема в том, что вы дважды избегаете т; вам, вероятно, следует сделать [\ t \ s] *, поскольку там может быть не только ноль или одна вкладка / пробел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...