при использовании?! в регулярном выражении Perl bash интерпретирует это как поиск по истории команд

Простая проблема, но я не могу ее исправить.

У меня есть следующее регулярное выражение Perl:

echo ... | grep -P "(? i) (v (ersion)?) \ s? (?! 0) \ d (\. |,) \ d {1,}"

Предполагается, что это соответствует каждой строке, описывающей версия чего-либо (например, V2,0 или версия 1.2 ). Но это не совпадает, когда версия начинается с V0 ... . Однако, когда я выполняю это, я получаю сообщение об ошибке -bash:! 0: событие не найдено , потому что ! используется для поиска в истории команд и выполнения последнего попадания.

Это в основном ломает регулярное выражение Perl для меня. Как я могу избежать интерпретации оболочки как ярлыка?

0
задан 27 June 2021 в 14:34

1 ответ

Используйте одинарные, а не двойные кавычки, чтобы защитить ваше регулярное выражение от оболочки.

1
ответ дан 28 July 2021 в 11:24

Другие вопросы по тегам:

Похожие вопросы: