Регулярное выражение (регулярное выражение) описывает шаблон сопоставления строк, который можно использовать для проверки того, содержит ли строка определенную подстроку, замены соответствующей подстроки или извлечения подстроки, соответствующей определенному условию, из определенной строки ожидания.
Функция регулярных выражений языка Perl очень мощная, по сути, самая мощная среди широко используемых языков. Многие языки обращаются к регулярным выражениям Perl при разработке поддержки регулярных выражений.
Три формы регулярных выражений Perl — это сопоставление, замена и преобразование:
Матч: м/
Замена: с/
Конверсия: тр/
Эти три формы обычно используются с =~ или !~ , =~ означает совпадение, !~ означает несовпадение.
Оператор сопоставления m// используется для сопоставления строкового оператора или регулярного выражения. Например, для сопоставления «run» в скалярной строке $bar используется следующий код:
Результат выполнения вышеуказанной программы:
Первый матч Второй матч
Сопоставление с образцом имеет некоторые часто используемые модификаторы, как показано в следующей таблице:
модификатор | описывать |
---|---|
я | Игнорировать регистр в шаблоне |
м | многострочный режим |
о | Присвойте значение только один раз |
с | Однострочный режим, "." соответствует "n" (по умолчанию не соответствует). |
х | Игнорировать пробелы в шаблоне |
г | глобальное совпадение |
cg | После того, как глобальное сопоставление не удалось, совпадающую строку можно снова найти. |
После обработки Perl для соответствующих значений будут три специальных имени переменных:
$`: предыдущая часть соответствующей строки.
$&: соответствующая строка
$': еще нет совпадающих строк
Если вы объедините эти три переменные, вы получите исходную строку.
Примеры следующие:
Выходной результат выполнения вышеуказанной программы:
Строка перед сопоставлением: добро пожаловать в строку перед сопоставлением: запустить строку после сопоставления: oob site.
Оператор замены s/// является расширением оператора сопоставления и заменяет указанную строку новой строкой. Основной формат следующий:
s/ШАБЛОН/ЗАМЕНА/;
ШАБЛОН — соответствующий шаблон, ЗАМЕНА — строка замены.
Например, мы заменяем «google» в следующей строке на «codercto»:
Выходной результат выполнения вышеуказанной программы:
Добро пожаловать на сайт codercto.
Модификаторы операции замены показаны в следующей таблице:
модификатор | описывать |
---|---|
я | Если к модификатору добавить «i», регулярное выражение отменит чувствительность к регистру, то есть «a» и «A» будут одинаковыми. |
м | Обычные начало «^» и конец «$» по умолчанию предназначены только для обычных строк. Если к модификатору добавляется «m», то начало и конец будут относиться к каждой строке строки: начало каждой строки — «^». ", заканчивается на "$". |
о | Выражение выполняется только один раз. |
с | Если к модификатору добавлено «s», по умолчанию «.», представляющее любой символ, кроме символов новой строки, станет любым символом, включая символы новой строки! |
х | Если добавлен этот модификатор, символы пробелов в выражении будут игнорироваться, если только они не экранированы. |
г | Замените все совпадающие строки. |
е | Заменить строку как выражение |
Ниже приведены модификаторы, относящиеся к оператору преобразования:
модификатор | описывать |
---|---|
с | Преобразовать все неуказанные символы |
д | Удалить все указанные символы |
с | Объединение нескольких одинаковых выходных символов в один |
В следующем примере все строчные буквы в переменной $string преобразуются в прописные:
#!/usr/bin/perl $string = 'добро пожаловать на сайт codercto.';$string =~ tr/az/Az/;print "$stringn";
Выходной результат выполнения вышеуказанной программы:
ДОБРО ПОЖАЛОВАТЬ НА САЙТ CODERCTO.
В следующем примере /s используется для удаления повторяющихся символов из переменной $string:
Выходной результат выполнения вышеуказанной программы:
руноб
Еще примеры:
$string =~ tr/d/ /c; # Заменить все нечисловые символы пробелами $string =~ tr/t //d # Удалить табуляции и пробелы $string =~ tr/0-9/ /cs; # Замените остальные символы между числами пробелом.
выражение | описывать |
---|---|
. | Соответствует всем символам, кроме символов новой строки. |
х? | Соответствовать строке x 0 или один раз |
х* | Сопоставьте строку x 0 или более раз, но сопоставьте минимально возможное количество раз. |
х+ | Сопоставьте строку x 1 или более раз, но сопоставьте минимально возможное количество раз. |
.* | Соответствует любому символу 0 или более раз. |
.+ | Сопоставьте любой символ 1 или более раз |
{м} | Соответствует ровно m указанным строкам |
{м, н} | Соответствует более чем m и менее чем n указанным строкам |
{м,} | Соответствовать m или более указанным строкам |
[] | Соответствует символам внутри [] |
[^] | Соответствует символам, которые не соответствуют [] |
[0-9] | Соответствует всем цифровым символам |
[аз] | Соответствует всем буквенным символам нижнего регистра. |
[^0-9] | Соответствует всем нечисловым символам |
[^аз] | Соответствует всем буквенным символам, отличным от строчных. |
^ | Соответствует символам, начинающимся с |
$ | Соответствует символу в конце символа |
д | Соответствует цифровому символу, тот же синтаксис, что и [0-9] |
д+ | Соответствует нескольким числовым строкам, тот же синтаксис, что и [0-9]+. |
Д | Нечисловой, такой же, как и другиеd |
Д+ | Не число, то же, что и d+ для других |
ш | Строка английских букв или цифр, тот же синтаксис, что и [a-zA-Z0-9_]. |
w+ | Тот же синтаксис, что и у [a-zA-Z0-9_]+ |
Вт | Строка неанглийских букв или цифр, тот же синтаксис, что и [^a-zA-Z0-9_]. |
W+ | Тот же синтаксис, что и у [^a-zA-Z0-9_]+ |
с | Пробел, тот же синтаксис, что и [ntrf] |
s+ | То же, что [ntrf]+ |
С | Не пробел, тот же синтаксис, что и [^ntrf] |
S+ | Тот же синтаксис, что и у [^ntrf]+ |
б | Соответствует строкам, ограниченным английскими буквами и цифрами. |
Б | Соответствует строкам, которые не ограничены английскими буквами или числовыми значениями. |
а|б|в | Соответствует строкам, которые соответствуют символу, символу b или символу c. |
абв | Сопоставить строку (шаблон), содержащую abc (). Этот символ запомнит найденную строку, что является очень практичным синтаксисом. Строка, найденная в первой (), становится переменной $1 или переменной 1, строкой, найденной во второй (). становится переменной $2 или переменной 2 и так далее. |
/шаблон/я | i Этот параметр указывает, что английский регистр игнорируется, то есть при сопоставлении строк проблема с английским регистром не учитывается. Если вы хотите найти специальный символ в режиме шаблона, например «*», вам необходимо его добавить. перед этим символом Используйте символ , чтобы сделать специальные символы недействительными. |