Emacs для начинающих

       

Регулярное выражение


Для осуществление поиска в AWK языке допускается использование регулярных выражений, определенных в описании SED, (см. ``Неинтерактивный текстовый редактор SED'' 2.1), заключенных в``/ /''. Дополнения к использованию регулярных выражений, допускаемые в AWK-языке:

  • "( )" - Скобки допускаются для группирования;
  • " |" - Указание альтернативы "или";
  • " + " - Плюс, стоящий за регулярным выражением означает любую последовательность вхождений этого выражения, начиная с 1;
  • " ? " - Знак вопроса за регулярным выражением означает 0 или 1 вхождений этого выражения;
  • [A-Z] - Допускается сокращенная форма записи для рангов ASCII символов;
  • Установленный порядок выполнения операторов на одном скобочном уровне: "[] * + ? конкатенация |".
  • Например:

    /Olga/ - Указывает на строки, содержащие Olga.

    /[Oo]lga|[Mm]ike|[Mm]al/ - Указывает на строки, содержащие Olga или olga или Mike или mike или Mal или mal.

    /number[0-9]/ - Указывает на строки, содержащие number0 или number1 или ... number9.

    /\/.+\// - Указывает на строки, содержащие любое количество символов, больше или равное 1, заключенных в / /.


    Для осуществления отбора строк для редактирования, в адресах команд SED допускается использование регулярных выражений, заключенных в "/ /" и определяемых следующим образом:

  • Регудярное выражение указывается в разделителях: "/ /" ;
  • любой символ (кроме специальных: \[.^*$ ) является регулярным выражением себя;
  • ^ в начале регулярного выражения указывает на пустой символ в начале регулярного выражения. (Т.е. на начало строки)
  • $ в конце регулярного выражения указывает на пустой символ в конце регулярного выражения. (Т.е. на конец строки);
  • \n - вставленный newline (новая строка);
  • . - любой символ (кроме обыкновенного newline );
  • * - стоящая за регулярным выражением означает любую последовательность вхождений этого выражения, начиная с 0;
  • [ ] - указывает на один из символов, приведенных внутри;
  • [^ ] - указывает на один из символов, кроме приведенных внутри;
  • \ - перед любым символом, кроме цифр и "(" , ")" , означает этот символ. ( Экранирование специальных символов).
  • \(x\) -, где x - регулярное выражение, указывает на x .
  • \d -, где d - цифра, указывает копию d -того выражения, которое заключалось в скобки "\(" и "\)" ;
  • конкатенация регулярных выражений является регулярным выражением.
  • Примеры:

    /olga/ - указывает на строки содержащие "olga" , "abcolgadef" ,...;

    /ol.*ga/ - указывает на строки, содержащие "olga" , "olabcga" ,....;

    /^[Oo]lga/ - на строки, начинающиеся с "Olga" или "olga" ;

    /./ - попадают все строки, имеющие хотя бы 1 символ (не newline );

    /\./ - попадают строки, содержащие "." ;

    /^[^ ]/ - строки, не начинающиеся с " " ;

    /\(ol\).*\1/ - строки, содержащие два вхождения "ol" не подряд.



    Содержание раздела