Регулярные выражения со странными совпадениями `<` и `\?`

Как и другие упомянутые участники, это, вероятно, проблема с разрешением.

Лучший способ диагностировать это — перезапустить демон SSH на удаленном сервере с параметром отладки -, обычно параметром «-d». Сообщение демона OpenSSH очень явное. Например, вы увидите такие сообщения, как:

Authentication refused: bad ownership or modes for directory /some/path
3
17.09.2019, 15:56
1 ответ
По умолчанию

grepрегулярные выражения интерпретируются как базовые регулярные выражения(BRE ). Они не поддерживают ?в качестве специального символа; это основной персонаж:

grep '<?' test.php
Таким образом,

дает ожидаемый результат.

GNU grepрассматривает экранированные версии символов, которые имеют особое значение в расширенных регулярных выражениях, но не в BRE , как специальные символы, даже в BRE :, таким образом, в BRE \?имеет то же значение, что и ?в ERE. Таким образом, grep '<\?'соответствует нулю или единице <, что соответствует всему (и выделяет <, если у вас включен цветной вывод ).

То же рассуждение применимо к sed.

12
27.01.2020, 21:08

Теги

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