Ошибка регулярного выражения "Повторение без предшествующего правильного выражения" в Grep - PullRequest
0 голосов
/ 23 мая 2018

У меня есть файл со строками, такими как {?ENV1} {?ENV2}

Я хочу использовать grep, чтобы найти их, используя

grep -o '\{\?\S+?\}' myfile

, но яget grep: bad regex '\{\?\S+?\}': Repetition not preceded by valid expression

на сайте regex101, регулярное выражение работает.Grep работает по-другому?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

POSIX grep Механизм регулярных выражений по умолчанию - POSIX BRE.Вы не должны избегать скобок или использовать \S.Прежний приводит к особым значениям (вы видите причину ошибки), а последний не поддерживается.Попробуйте:

grep -o '{?[^{}]*}' file

Или сохранить \S Цель:

grep -o '{?[^[:space:]]*}' file

Или даже обойти + Квантор:

grep -o '{?[^[:space:]][^[:space:]]*}' file
0 голосов
/ 23 мая 2018

Используйте флаг -P для регулярных выражений на основе Perl (хотя все еще в экспериментальной фазе)

grep -oP '\{\?\S*\}' myfile

ИЛИ

Попробуйте это с обновленным регулярным выражением.Вы можете использовать *

grep -o '\{\?\S*\}' myfile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...