Справочник по Debian



         

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


Регулярные выражения используются во многих инструментах обработки текста. Они очень похожи на шаблоны имен файлов командного интерпретатора (смотрите Шаблоны имени файла (wildcards) командного интерпретатора, раздел 4.3.8), но они не только сложнее, но и мощнее.

Регулярное выражение описывает шаблон соответствия и составляется из символов текста и метасимволов. Метасимвол - это простой символ со специальным смыслом. Существует два основных стиля регулярных выражений, БРВ и РРВ, в зависимости от текстовых инструментов, описанных в Традиционная для Unix обработка текста, раздел 4.4.

Для РРВ метасимволы включают "\ . [ ] ^ $ * + ? ( ) { } |". Регулярное выражение означает:

  • c

    • соответствие неметасимволу "c".

    • \c

      • соответствие символу, определяемому escape-последовательностью "c", или, если "c" не escape-последовательность, то просто символу "c".

      • .

        • соответствие любому символу, включая символ новой строки.

        • ^

          • соответствие началу строки.

          • $

            • соответствие концу строки.

            • \<

              • соответствие началу слова.

              • \>

                • соответствие концу слова.

                • [abc...]

                  • соответствие любому символу из списка "abc...".

                  • [^abc...]

                    • отсутствие соответствия любому символу из списка "abc...".

                    • r*

                      • соответствие регулярному выражению "r", повторенному ноль или большее количество раз.

                      • r+

                        • соответствие регулярному выражению "r", повторенному один или большее количество раз.

                        • r?

                          • соответствие регулярному выражению "r", повторенному ноль или один раз.

                          • r1|r2

                            • соответствие регулярному выражению "r1" либо регулярному выражению "r2".

                            • (r1|r2)

                              • соответствие регулярному выражению "r1" либо "r2"; конструкция обрабатывается как регулярное выражение, заключенное в скобки.

                                В БРВ метасимволы "+ ? ( ) { } |" теряют свое особое значение, взамен используйте те же символы с обратным слешем впереди "\+ \? \( \) \{ \} \|". Поэтому конструкция с скобками (r1|r2), записанная с использованием БРВ, должна быть в виде \(r1|r2\). Однако программа emacs, использующая БРВ, обрабатывает символы "+ ?" как метасимволы. То есть нет необходимости предворять их обратным слешем. Смотрите , чтобы узнать, как используются конструкции со скобками.

                                Например, программа grep может быть использована для выполнения поиска текста с использованием регулярных выражений:

                                $ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE Yoyodyne, Inc., hereby disclaims all copyright interest in the program




                                Содержание  Назад  Вперед