Концепция регулярных выражений (regexps) - обозначений для описания шаблонов, соответствующих набору строк - является общей для множества программ и языков программирования. Различные реализации регулярных выражений отличаются друг от друга в деталях, но принципы, необходимые для обучения созданию регулярных выражений, одинаковы во всех их реализациях.
Эта статья рассматривает несколько полезных инструментальных средств и приемов для обучения созданию и улучшению регулярных выражений для ряда приложений UNIX®, таких как:
- маркировка совпадений
- показ только совпадений, а не строк целиком
- использование мастера создания регулярных выражений
- изучение документов
Маркировка совпадений в зависимости от их контекста
При создании регулярного выражения нелишней будет возможность видеть, какие строки сопоставляются с образцом в текущем наборе данных. Рассмотрите этот текст, состоящий из четырех строк в примере 1 и простейшее регулярное выражение t[a-z] которое находит соответствие для двухсимвольного шаблона.
Пример 1. Текст из четырех строк и регулярное выражение, которое ищет в них совпадения
$ cat midsummer
I know a bank where the wild thyme blows,
Where oxlips and the nodding violet grows,
Quite over-canopied with luscious woodbine,
With sweet musk-roses and with eglantine.
$ grep t[a-z] midsummer
I know a bank where the wild thyme blows,
Where oxlips and the nodding violet grows,
Quite over-canopied with luscious woodbine,
With sweet musk-roses and with eglantine.
$
|
Так как регулярное выражение находит по крайней мере одно совпадение с образцом в каждой строке, команда grep записывает каждую строчку во входной файл. Но для каких именно символов из строк найдено совпадение с регулярным выражением?
Для такого простого регулярного выражения как это, вы можете и сами уверенно сразу ответить на этот вопрос. Но когда создано запутанное регулярное выражение и оно работает с большими наборами данных или входными файлами, будет гораздо труднее труднее понять, какая строка или строки будут поставлены в соответствие с регулярным выражением. Очень полезно иметь возможность видеть для каждой строки какой именно текст в ней совпал с образцом в регулярном выражении. Способ увидеть результат работы регулярных выражений - промаркировать их, когда они будут возвращать результаты.
Вы можете осуществить это с помощью нескольких приложений, включая grep, sed и Emacs.
Некоторые из новейших версий grep (такие как GNU grep
) отмечают цветом регулярное выражение, когда вы используете опцию --color, как показано на рисунке 1.
Рисунок 1. Выделенные цветом совпавшие подстроки в grep
Если ваш дисплей цветной, полезно посмотреть как точно строки совпали с образцом регулярного выражения.
Вы также можете маркировать регулярное выражение при помощи потокового редактора sed. Команда sed :
's/regexp/[&]/g'
|
Она заключает в квадратные скобки все совпадения с образцом, отмеченные регулярным выражением. Пример 2 показывает результаты работы sed на несложном тексте.
Пример 2. Совпадения строк, отмеченные sed
$ sed 's/t[a-z]/[&]/g' midsummer
I know a bank where [th]e wild [th]yme blows,
Where oxlips and [th]e nodding violet grows,
Qui[te] over-canopied wi[th] luscious woodbine,
Wi[th] sweet musk-roses and wi[th] eglan[ti]ne.
$
|
Естественно, что вы можете выделить результаты работы регулярного выражения и другим путем. Если вводимые данные являются документом традиционной машинописной системы Groff, также можно добавить поддержку жирного шрифта к регулярному выражению и передать документ команде groff на выполнение:
$ sed 's/t[a-z]/\\fB&\\fP/g' infile.roff | groff -
|
Также можно написать короткую sed-программу, чтобы отметить удачные сопоставления цветом. Если ваша оболочка поддерживает управляющие последовательности, вы можете отметить цветом все регулярные выражения в контексте файла. Ввиду того, что управляющие последовательности являются громоздкими для ручного ввода, вы несомненно захотите запустить их при помощи скрипта, как показано в
примере 3.
Пример 3. sed-программа, которая выделяет цветом совпавшие с образцом строки
#!/bin/sh
# highlights regexp pattern in input file
# usage: hre regexp file
sed 's/'$1'/^[[34m&^[[37m/g' < $2
|
Символ ^[, который дважды появляется в примере, является символом управляющей последовательности, поэтому вам надо вводить этот пример в редакторе, который поддерживает ввод литеральных символов - например Emacs (где для ввода символа управляющей последовательности вам надо ввести C-q ESC). Числа 34 и 37 являются кодами интерпретатора Bash для задания голубого и и белого цветов.
Чтобы сделать скрипт выполняемым, напечатайте:
$ chmod 744 hre
|
Потом запустите его, как показано на рисунке 2.
Рисунок 2. Совпавшие подстроки выделены цветом при помощи sed
Хотя вы можете определить цвет выделения (маркирования) текста и простые цвета с помощью этого метода, существуют предостережения к его использованию. Например, скрипт, показанный в примере 3, работает только тогда, когда простой текст в окне терминала белого цвета, потому что он восстанавливает этот цвет текста. Если ваш терминал использует другой цвет для отображения простого текста, поменяйте в скрипте управляющий код. (Например, 30 - это черный.)
Выделение цветом с помощью Emacs
В новейших версиях редактора Emacs функции isearch-forward-regexp и isearch-backward-regexp выделяют все совпадения в буфере. Если у вас стоит последняя версия Emacs, попробуйте выполнить эти функции сейчас:
-
Запустите Emacs, напечатав:
$ emacs midsummer
-
Введите следующее:
M-x isearch-forward-regexp.Последовательность
M-x- это условный знак Emacs для Meta-x, который вы можете ввести в большинстве систем либо нажав и удерживая клавиши Alt, одновременно нажав X, а затем отпустив обе клавиши, либо нажав клавишу Esc, отпустив ее, и затем нажав клавишу X. -
Создайте регулярное выражение типа:
t[a-z]Ввиду того, что поиск инкрементый, Emacs начинает маркировать совпадения как только вы напечатаете единственный символ: в этом случае, когда при нажатии клавиши T, все символы T в буфере выделяются. Заметьте, что как только вы начинаете печатать что-либо, заключая содержимое в скобки, маркирование исчезнет и Emacs выведет отчет в средство minibuffer о том, что у него недостаточно входных данных для отобрженияя удачных сопоставлений.
Результаты вашей работы с Emacs должны выглядеть примерно так, как на рисунке 3.
Рисунок 3. Буфер Emacs показывает регулярное выражение для текущей задачи
-
Введите
C-x C-cчтобы выйти из Emacs.Вы вводите эту комбинацию путем нажатия и удерживания клавиши Ctrl и однократного нажатия X, повторного нажатия и удерживания Ctrl с одновременным нажатием клавиши C.
Функциям isearch-forward-regexp и isearch-backward-regexp обычно соотвествуют комбинации M-S-s и M-S-r. (Чтобы создать их, нажмите и удерживайте клавишу Alt, Ctrl и либо клавишу S либо клавишу R.)
Отображение только совпадений, а не строк целиком
Есть другой подход к проблеме контекста образца, который состоит только в том, чтобы выводить только совпадения сами по себе, а не строки, где было найдено это совпадение, целиком. Существует несколько способов чтобы сделать это с помощью grep, sed, и perl.
Отображение только совпадений при помощи grep
Флаг --only-matching (или по-другому -o) изменяет поведение grep так, что команда выводит не целиком строки, в которых нашлись совпадения с шаблоном регулярного выражения, а только сами совпадения. Вместе с флагом --color, описанным выше, эта возможность появилась в новейших реализациях некоторых версий grep, включая GNU grep, у которого открытый исходный код и который доступен для многих операционных систем.
Итак, этот флаг предназначен для сбора данных, которые удовлетворяют условию в регулярном выражении, поэтому он идеально подходит для сбора IP-адресов, URL-ссылок, имен, адресов электронной почты, и т.п., но помимо всего прочего это еще и отличный способ получить регулярные выражения. Например, пример 4 показывает как использовать этот флаг, чтобы получить все слова из исследуемого текста из примера 1. Он выводит каждое слово в отдельную строку.
Пример 4. Сбор всех слов из текста
$ egrep -o '[A-Za-z]+' midsummer
I
know
a
bank
where
the
wild
thyme
blows
Where
oxlips
and
the
nodding
violet
grows
Quite
over
canopied
with
luscious
woodbine
With
sweet
musk
roses
and
with
eglantine
$
|
Фактически, когда вы создаете в высокой степени запутанное регулярное выражение для конкретной задачи, использование этого флага является простейшим способом протестировать регулярное выражение, чтобы убедиться, что оно постороено корректно. В большинстве случаев, это дает возможность заблаговременно скорректировать работу регулярного выражения.
Допустим, нужно вывести все слова из текстового файла, содержащие строку th, и вы создали регулярное выражение для реализации этого, как показано в примере 5.
Пример 5. Вывод всех слов, содержащих th. Первая попытка
$ egrep -o 'th[a-z]*' midsummer
the
thyme
the
th
th
th
$
|
Регулярное выражение не работает. Видно, что некоторые из результатов, выведенных регулярным выражением, вообще не являются словами. Лучше попробуйте заново: пример 6 учитывает также любые символы в словах, которые могут предшествовать th.
Пример 6. Выводим все слова с th. Вторая попытка
$ egrep -o '[a-z]*th[a-z]*' midsummer
the
thyme
the
with
ith
with
$
|
Уже гораздо лучше, но пока еще не идеальный результат. Строчка th говорит о том, что регулярное выражение не воспринимает верхний регистр, когда ищет совпадения со своим образцом. Исправьте это при помощи флага -i, как показано в примере 7.
Пример 7. Вывод всех слов, содержащих th. Третья попытка
$ egrep -o -i '[a-z]*th[a-z]*' midsummer
the
thyme
the
with
With
with
|
Теперь то, что надо!
Использование флага -o и каких-нибудь тестовых данных для проверки регулярного выражения очень полезно при их создании, так как можно предположить что регулярное выражение работает должным образом, но в то же время и не знать, что есть случаи, которые оно не охватывает и не может корректно провести сопоставление.
Отображение только совпадений с использованием sed
Вы можете делать вещи, как в прошлом пункте, уже с использованием команды sed:
s/.*\(regexp\).*/\1/p
|
Эта команда выводит только совпавшие с образцом символы из вводимых данных, а не строки, которые содержат совпадения, целиком, но отображается последнее совпадение в строке, как показано в примере 8.
Пример 8. Вывод только совпавших символов при помощи sed
$ sed -n 's/.*\(th[a-z]\).*/\1/p' midsummer
thy
the
$ grep -o th[a-z] midsummer
the
thy
the
$
|
Отображение только совпадений с Perl
Регулярные выражения также активно используются в языке программирования Perl, но регулярные выражения в Perl отличны от тех, что вы строили при помощи команды grep. Инструментальное средство pcretest позволяет протестировать регулярные выражения в Perl. Можно использовать этот инструментарий, чтобы ознакомится с Perl-совместимой библиотекой регулярных выражений (PCRE), и для того, чтобы отладить или протестировать регулярные выражения, которые были созданы с помощью этого инструментального средства.
Обычно регулярное выражение заключается в символы-слэши (/) и сопровождается модификаторами, которые вносят изменения в механизм поиска. Наиболее распространенные модификаторы регулярных выражений представлены в таблице 1.
Таблица 1. Распространненые модификаторы регулярных выражений для инструментального средства pcretest
| Модификатор | Описание |
|---|---|
8
| Этот модификатор добавляет поддержку символов Unicode (UTF-8). |
g
| Этот модификатор ищет глобальные совпадения (больше чем по одному на строку). |
i
| Этот модификатор позволяет игнорировать регистр символов. |
m
| Этот модификатор дает возможность поиска на нескольких строках. |
x
| Этот модификатор использует расширенные регулярные выражения Perl. |
Попробуйте запустить pcretest, как показано на рисунке 9.
Рисунок 9. Тестирование ваших регулярных выражений при помощи pcretest
$ pcretest
PCRE version 6.7 04-Jul-2006
re> /[a-z]*th[a-z]*/ig
data> With sweet musk-roses and with eglantine.
0: With
0: with
data>
Ctrl-c
$
|
Также можно запустить pcretest с входным файлом, который содержит регулярное выражение, которое надо протестировать на одной только строке или совокупности строк. У вас могут быть составные регулярные выражения и образцы для сравнивания, тогда они должны быть отделены друг от друга пустой строкой. pcretest продолжает искать совпадения для образца регулярного выражения во входных данных до тех пор, пока он не достигнет конца файла (EOF).
Если вы предоставите pcretest имя второго файла, то он будет выводить результаты в него. В противном случае он осуществляет стандартный вывод, как показано в примере 10.
Пример 10. Запуск pcretest с входным файлом
$ cat midsummer.pre
/w[hi]|th/gi
I know a bank where the wild thyme blows,
Where oxlips and the nodding violet grows,
Quite over-canopied with luscious woodbine,
With sweet musk-roses and with eglantine.
$ pcretest midsummer.pre
PCRE version 6.7 04-Jul-2006
/w[hi]|th/gi
I know a bank where the wild thyme blows,
0: wh
0: th
0: wi
0: th
Where oxlips and the nodding violet grows,
0: Wh
0: th
Quite over-canopied with luscious woodbine,
0: wi
0: th
With sweet musk-roses and with eglantine.
0: Wi
0: th
0: wi
0: th
$
|
Использование мастера создания регулярных выражений
txt2regex является интерактивным кросс-платформенным мастером для создания регулярных выражений для интерпретатора Bash. Когда вы его запускаете, он задает ряд вопросов об образце, с которым нужно искать совпадения и затем создает корректное регулярное выражение для любого из двух дюжен различных приложений:
-
awk; -
ed; -
egrep; -
emacs; -
expect; -
find; -
gawk; -
grep; -
javascript; -
lex; -
lisp; -
mawk; -
mysql; -
ooo; -
perl; -
php; -
postgres; -
procmail; -
python; -
sed; -
tcl; -
vbscript; -
vi; -
vim.
Кроме того, что txt2regex помогает интерактивно создавать регулярные выражения, он предоставляет краткое изложение синтаксиса регулярных выражений для различных языков и приложений, список уже готовых регулярных выражений для сопоставления наиболее общих образцов и удобную таблицу метасимволов, используюемых при составлении регулярных выражений.
Создание регулярного выражения
Чтобы создать регулярное выражение для одного или более поддерживаемых txt2regex приложений, разделяйте имена этих приложений запятой. И используйте этот список в качестве аргумента к флагу --prog.
Начните с попытки создания регулярного выражения как в разделе Выделенные цветом совпадения, которое ищет совпадения для символа Т, прямо за которым следует буква в нижнем регистре:
-
Запустите txt2regex и определите регулярные выражения для
grep,sed, и Emacs:$ txt2regex --prog grep,sed,emacs
-
Вы хотите искать совпадения для буквы Т в любой части строки, а не только в ее начале, поэтому введите
2для выбора условия "в любой части строки". -
Введите
2снова для выбора опции "конкретный символ" и затем введитеt, когда будут запрошено, для какого именно символа искать совпадения.Теперь вам следует ответить на вопрос сколько совпадений вам надо найти.
-
Введите
1, чтобы точно определить максимум совпадений, которые надо найти. -
Для сопоставления букв нижнего регистра, введите
6чтобы выбрать "особую комбинацию символов" и затем введитеbдля сопоставления букв нижнего регистра. Введите.для выхода в главное меню txt2regex. -
Для сопоставления букв нижнего регистра только один раз введите
1.
После того как вы полностью определите, какое регулярное выражение вам нужно, txt2regex создаст регулярное выражение для каждого из трех выбранных приложений и отобразит их в верхней части экрана. Итак, после того как вы точно определились с желаемой функциональностью регулярного выражения, можно увидеть его в версиях для всех трех приложений на рисунке 4.
Рисунок 4. Создание регулярного выражения при помощи txt2regex
Введите .. для выхода. Список регулярных выражений останется на вашем терминале.
Да, вышло так, что все три регулярных выражения одинаковы t[a-z], но это только потому, что у нас достаточно простое регулярное выражение и три выбранных приложения имеют единый синтаксис для регулярных выражений. И далеко не всегда регулярные выражения будут одинаковы для всех трех выбранных приложений.
Скажем, например, необходимо создать два регулярных выражения по образу регулярных выражений из раздела Как показать только сами совпадения, а не строку целиком. Первое представляло слово, состоящее из букв верхнего или нижнего регистра:
-
Запустите txt2regex без каких-либо флагов:
$ txt2regex
-
Введите
2для поиска совпадений в любой части строки. -
Введите
6чтобы задать специальную комбинацию и затем введитеaиbдля выбора всех букв вернего или нижнего регистра. -
Введите
.для возвращения в главное меню а затем введите4чтобы определить, что нужно искать одно или более совпадений.
Без флагов, то есть по умолчанию, txt2regex создаст регулярные выражения для следующих приложений и языков:
perl, php, postgres, python,
sed, and vim. Когда вы пройдете все этапы, описанные выше, при создании регулярного выражения, обнаружится, что первые четыре приложения используют теже регулярные выражения, что были использованы с grep в примере 4, но регулярные выражения для sed и vim отличаются друг от друга незначительно. Это потому, что эти приложения используют несколько разные наборы метасимволов, как будет описано ниже.
И снова введите .. для выхода из программы; регулярные выражения для различных программ останутся на вашем терминале. Вы можете использовать их такими или улучшать их дальше. Например, как насчет поиска совпадений для слов, содержащих символ апострофа (') —don't, who're, e'er, owner's, 'cause, Joe's и тому подобных? Регулярное выражение, которое вы создали только что, не сможет корректно сопоставлять такие слова (см. пример 11).
Пример 11. Неправильное сопоставление слов с апострофом
$ echo "Don't miss a word, just 'cause it's wrong." | egrep [A-Za-z]+
Don
t
miss
a
word
just
cause
it
s
wrong
$
|
Вам надо добавить символ апострофа к списку в квадратных скобках. Результат работы регулярного выражения показан в примере 12. Обратите внимание, что сейчас регулярное выражение заключено в кавычки.
Пример 12. Правильное сопоставление слов с апострофом
$ echo "Don't miss a word, just 'cause it's wrong." | egrep "[A-Za-z']+"
Don't
miss
a
word
just
'cause
it's
wrong
$
|
Следующее регулярное выражение, котороерассматривалось в разделе Как показать только сами совпадения, а не строку целиком было для одиночных слов, содержащих в любой своей части сочетание символов th. Вы использовали регулярные выражения для
egrep, sed, и perl; теперь попробуем создать его для grep:
-
Запустите txt2regex:
$ txt2regex
-
Введите
/для выбора доступных программ и введитеhkopqstx.. Таким образом будет создано регулярное выражение только дляgrep. -
Введите
26ab.3для возможности поиска нужного сочетания букв верхнего или нижнего регистра где угодно в строке. -
Введите
2t12h1для задания символов, которым искать совпадения - T и H, следующими друг за другом, причем это сочетание, TH, встречается только один раз в слове. -
Введите
6ab.3для возможности поиска последовательности букв th; любого регистра. -
Введите
..для выхода из программы.
Вы можете протестировать построенное регулярное выражение, как показано в примере 13.
Пример 13. Сопоставление слов, содержащих th при помощи grep
$ grep -o [A-Za-z]*th[A-Za-z]* midsummer
the
thyme
the
with
With
with
$
|
Краткие сведения об опциях регулярных выражений
Опция (флаг) --showinfo выводит краткую сводку информации о создании регулярных выражений конкретно для какого-либо языка или программы. В выводимую информацию включается название и версия приложения, метасимволы регулярного выражения, символ по умолчанию отмеченного подвыражения ("\"), которое может быть использовано позже, метасимволы, перед которыми надо ставить "\", можете ли вы использовать в квадратных скобках символ табуляции ("\t") и поддерживает ли язык или приложение выражения, заключаемые в квадратные скобки, определенные в Portable Operating System Interface (POSIX).
Если вы разработчик, который работает с несколькими приложениями, хороший способ получить краткий свод правил построения регулярного выражения для конкретного приложения показан в примере 14.
Пример 14. Получения краткого обзора правил регулярных выражений при помощи txt2regex
$ txt2regex --showinfo javascript
program javascript: netscape-4.77
metas . [] [^] * + ? {} | ()
esc meta \
need esc \.*[{(|+?^$
\t in [] YES
[:POSIX:] NO
$ txt2regex --showinfo php
program php: 4.0.6
metas . [] [^] * + ? {} | ()
esc meta \
need esc \.*[{(|+?^$
\t in [] YES
[:POSIX:] YES
$
|
Получение готовых регулярных выражений
Опция --make описана своим автором как a remedy for headaches (лекарство от головной боли). Оно выводит регулярные выражения для одного из нескольких общих образцов, которые задаются как параметры. Список готовых регулярных выражений показан в таблице 2.
Таблица 2. Список готовых регулярных выражений, предоставляемых txt2regex
| Аргумент | Описание |
|---|---|
date
|
Этот параметр соответствует дате в формате mm/dd/yyyy с диапазоном от 00/00/0000 до 99/99/9999.
|
date2
|
Этот параметр соответствует дате в формате mm/dd/yyyy с диапазоном от 00/00/1000 до 19/39/2999.
|
date3
|
Этот параметр соответствует дате в формате mm/dd/yyyy с диапазоном от 00/00/1000 до 12/31/2999.
|
hour
|
Этот параметр соответствует времени в формате hh:mm в диапазоне от 00:00 до 99:99.
|
hour2
|
Этот параметр соответствует времени в формате hh:mm в диапазоне от 00:00 до 29:59.
|
hour3
|
Этот параметр соответствует времени в формате hh:mm в диапазоне от 00:00 до 23:59.
|
number
| Этот парамеир соответствует любому положительному или отрицательному целочисленному значению. |
number2
| Этот параметр соотвествует любому положительному или отрицательному целому числу с дополнительными разрядами после запятой. |
number3
| Этот параметр соответствует положительному или отрицательному целому числу с дополнительными запятыми и дополнительным значением после запятой. |
Например, вы можете использовать эти параметры чтобы получить готовое регулярное выражение для работы с военным временем, как показано в примере 15.
Пример 15. Получение регулярного выражения для работы со временем от txt2regex
$ txt2regex --make hour3
RegEx perl : ([01][0-9]|2[0123]):[012345][0-9]
RegEx php : ([01][0-9]|2[0123]):[012345][0-9]
RegEx postgres: ([01][0-9]|2[0123]):[012345][0-9]
RegEx python : ([01][0-9]|2[0123]):[012345][0-9]
RegEx sed : \([01][0-9]\|2[0123]\):[012345][0-9]
RegEx vim : \([01][0-9]\|2[0123]\):[012345][0-9]
$
|
Другой полезной возможностью txt2regex является опция --showmeta, которая выводит таблицу, содержащую все метасимволы, используемые при построении регулярных выражений для поддерживаемых приложений и языков. Работа этой опции показана в примере 16.
Пример 16. Отображение всех метасимволов при помощи txt2regex
$ txt2regex --showmeta
awk + ? | ()
ed \+ \? \{\} \| \(\)
egrep + ? {} | ()
emacs + ? \| \(\)
expect + ? | ()
find + ? \| \(\)
gawk + ? {} | ()
grep \+ \? \{\} \| \(\)
javascript + ? {} | ()
lex + ? {} | ()
lisp + ? \\| \\(\\)
mawk + ? | ()
mysql + ? {} | ()
ooo + ? {} | ()
perl + ? {} | ()
php + ? {} | ()
postgres + ? {} | ()
procmail + ? | ()
python + ? {} | ()
sed \+ \? \{\} \| \(\)
tcl + ? | ()
vbscript + ? {} | ()
vi \{1\} \{01\} \{\} \(\)
vim \+ \= \{} \| \(\)
NOTE: . [] [^] and * are the same on all programs.
$
|
Изучение руководств приносит пользу. У вашей системы должно быть море документации, включая справочную систему man, про создание и использование регулярных выражений.
Например, синтаксис создания регулярных выражений к grep, sed и других инструментальных средств подобного типа, а также примеры к этим регулярным выражениям описаны в справоной системе man. Если у вас установлены GNU-версии этих приложений, то у них также должны быть справочные системы, содержащие даже больше информации, чем стандартная справочная система man. Например, если у вас установлен GNU sed и у вас есть файл справки info, вы можете прочитать руководство:
$ info sed
|
Документация к Perl (обычно посталяется отдельно от основного комплекта поставки Perl) содержит всестороннюю оперативную страницу руководства по регулярным выражениям в Perl:
$ man perlre
|
И даже больше! Оперативная страница руководства man для pcrepattern (поставляемая с приложениемpcretest, как описано выше) также является руководством по регулярным выражениям в Perl.
В заключение, оперативная страница руководства man по regex, доступная на многих UNIX-системах, предоставляет информацию о создании регулярных выражений, поддерживающих интерфейсы POSIX. Информация в этой оперативной странице памяти взята из библиотеки регулярных выражений Генри Спенсера (Henry Spencer's regex library) (см. дополнительную информацию).
Множество инструментальных средств и методов доступны на UNIX-системах для создания регулярных выражений. Вы ознакомились с лучшими из них.
Эти инструментальные средства предоставляют прекрасные возможности для создания, тестирования и улучшения регулярных выражений. Использование этих инструментальных средств и приемов в UNIX-системах возможно лучший путь, чтобы научиться создавать сложные регулярные выражения.
Научиться
-
Know your regular expressions:
ознакомьтесь с оригиналом статьи (EN).
-
"Hone your regexp pattern-building skills"
(Michael Stutz, developerWorks, июль 2006): эта статья описывает несколько регулярных выражений для системного администрирования, которые вы, возможно, найдете полезными для себя.
-
Speaking UNIX, Part 9: Regular expressions (EN)
(Martin Streicher, developerWorks, апрель 2007): эта статья представляет собой короткий учебник для начинающих создавать регулярные выражения.
-
Ознакомьтесь с другими статьями, написанными Михаэлем Штутцом (Michael Stutz):
- Разделы библиотеки информации по AIX и UNIX:(EN)
- Системное администрирование
- Разработка приложений
- Производительность
- Переносимость
- Безопасность
- Подсказки
- Инструментальные средства и утилиты
- Java™-технологии
- Linux®
- Open source
-
AIX и UNIX: сообщество developerWorks предоставляет много информации, относящийся ко всем аспектам системного администрирования AIX и поднятия ваших навыков в работе с UNIX.(EN)
-
Новичок в AIX и UNIX: посетите страницу AIX и UNIX для начинающих, чтобы узнать больше о AIX и UNIX.
-
AIX 5L Wiki: среда сотрудничества в области технической информации, связанной с AIX.(EN)
-
developerWorks technical events and webcasts: будьте в курсе последних событий и webcast-конференций сообщества developerWorks.(EN)
-
Podcasts: оставайтесь на связи с техническими экспертами IBM.(EN)
Получить продукты и технологии
-
IBM trial software: создайте ваше следующее приложение при помощи программного обеспечения, загруженного прямо со страницы сообщества developerWorks.(EN)
-
GNU Project Web site: загрузите бесплатную копию GNU
grepдля вашей операционной системы.(EN) -
PCRE: загрузите бесплатную копию PCRE.(EN)
-
txt2regex script: загрузите бесплатную копию программы txt2regex.(EN)
-
regex: загрузите бесплатную копию библиотек регулярных выражений Генри Спенсера (Henry Spencer's regular expression libraries).(EN)
Обсудить
- Примите участие в обсуждении материала на форуме.
-
Примите участие в блогах developerWorks и вступайте в сообщество developerWorks.(EN)
- Примите участие в форумах AIX и UNIX:(EN)
- Управление кластерными системами
- Поддержка IBM
- Cредства для настройки производительности
- Технологии виртуализации
Михаэль Штутц (Michael Stutz) - автор книги The Linux Cookbook, которую он создал и набрал на компьютере с использованием только программного обеспечения с открытым исходным кодом. Его интересы в работе включают также цифровую публикацию и будущее его книги. Он использует различные версии операционной системы UNIX вот уже 20 лет. Вы можете написать ему на адрес stutz@dsl.org.