ясное значение. * в регулярном выражении

У меня также была проблема с Ubuntu 11.10 и 12.10. Проблема заключалась в том, что Wi-Fi не был обнаружен на BCM43142 Sony VAIO FIT 15E. Поэтому, когда я пытался установить Ubuntu 13.10, во время установки я проверил опцию «Установить это стороннее программное обеспечение», и это сработало для меня !!

См. Шаг 2 в разделе «Установка Ubuntu», подраздел. Подготовьте установите Ubuntu. Вы также можете попробовать это.

1
задан 27 January 2017 в 06:40

3 ответа

В abbdz только потому, что . соответствует b вначале, не означает, что . будет соответствовать только b для остальной части выражения.

0
ответ дан 23 May 2018 в 02:01

Модификаторы повторения, такие как *, действуют на предыдущий атом регулярных выражений, а не на повторы символа, совпадающего с предыдущим атомом регулярного выражения. Так, например:

$ printf 'az\nabz\nabbz\nabbbz\nabcz\n' | sed -n '/a.*z/p'
az
abz
abbz
abbbz
abcz

(все строки соответствуют). Если вы хотите совместить повторения повторений символа, совпадающего с символом , вы можете использовать обратную ссылку:

$ printf 'az\nabz\nabbz\nabbbz\nabcz\n' | sed -n '/a\(.\)\1*z/p'
abz
abbz
abbbz
0
ответ дан 23 May 2018 в 02:01
  • 1
    Как вы могли бы также соответствовать первой строке, az? Я попробовал '/a\(.|\(.\)\1*\)z/ p', но получил ошибку, " Недопустимая обратная ссылка & quot ;. '/a\(.\)?\1*z/ p' также не работает. – wjandrea 27 January 2017 в 06:48
  • 2
    Помните, что | также необходимо экранировать в BRE - так что либо sed -n '/a\(.\|\)\1*z/p', либо (более читаемый, используя ERE) sed -En '/a(.|)\1*z/p' – steeldriver 27 January 2017 в 06:57
  • 3
    Благодаря! Я сам нашел другой ответ: sed -n '/a\(.\)\?\1*z/ p' или sed -En '/a(.)?\1*z/ p' – wjandrea 27 January 2017 в 06:58
  • 4
    @wjandrea yup, что более аккуратно, чем мое предложение – steeldriver 27 January 2017 в 07:01

grep a.*z соответствует всем, что существует между первым вхождением a и последним вхождением z, включая первый a и последний z. [F3] является подстановочным выражением, которое соответствует любой последовательности символов, включая пустую последовательность length = 0. grep a.*z соответствует всем следующим строкам, начинающимся с a и заканчивающимся z: «abcdefghijklmnopqrstuvwxyz», «abz», «abbz», «ahhhhhz» и «abbdz». Он также соответствует тексту, который охватывает несколько строк, например, этот текст:

abcdefghijklmnopqrstuvwxyz
abz
abbz
ahhhhhz
abbdz
0
ответ дан 23 May 2018 в 02:01

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

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