Рейтинг:0

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

флаг in
Cas

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

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

эхо...| grep -P "(?i)(v(версия)?)\s?(?!0)\d(\.|,)\d{1,}"

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

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

флаг hr
Несколько связано: [bash: ошибка в команде экспорта, которая bash: !st: событие не найдено] (https://askubuntu.com/questions/1130809/bash-error-in-export-command-that-bash-st-event -не найден)
Рейтинг:1
флаг es

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.