Php preg replace примеры: PHP.SU — preg_replace()
Выполняет поиск и замену по регулярному выражению
Строка или массив строк для замены. Если этот параметр является
строкой, а pattern
является массивом,
все шаблоны будут заменены этой строкой. Если и
pattern
и replacement
являются массивами, каждый элемент pattern
будет
заменен соответствующим элементом из replacement
.
Если массив replacement
содержит меньше
элементов, чем массив pattern
, то все
лишние шаблоны из pattern
будут
заменены пустыми строками.
replacement
может содержать ссылки вида
\\n, либо
$n,
причем последний вариант предпочтительней. Каждая такая ссылка
будет заменена на подстроку, соответствующую
n-ой подмаске.
n может принимать значения от 0
до 99, причем ссылка \\0 (либо
$0) соответствует вхождению всего шаблона.
Подмаски нумеруются слева направо, начиная с единицы.
Для использования обратного слеша, его необходимо продублировать
(строка PHP «\\\\»).
При замене по шаблону с использованием ссылок на подмаски
может возникнуть ситуация, когда непосредственно за маской
следует цифра (например, установка цифры сразу после совпавшей маски).
В таком случае нельзя использовать знакомую нотацию вида
\\1 для ссылки на подмаски.
Запись, например, \\11, смутит
preg_replace(), так как она не сможет понять,
хотите ли вы использовать ссылку \\1, за
которой следует цифра 1 или же вы хотите
просто использовать ссылку \\11, за которой
ничего не следует. Это недоразумение можно устранить, если
воспользоваться конструкцией ${1}1,
использующей изолированную ссылку $1, и
следующую за ней цифру 1.
При использовании устаревшего модификатора e эта
функция экранирует некоторые символы (а именно
‘, «,
\ и NULL) в строках, замещающих обратные
ссылки. Это сделано для удостоверения корректности синтаксиса
при использовании обратных ссылок внутри одинарных или двойных
кавычек (например, ‘strlen(\’$1\’)+strlen(«$2»)’).
Убедитесь, что вы владеете синтаксисом
обработки строк PHP для того, чтобы точно осознавать,
как будет выглядеть интерпретированная строка.
sed в linux — примеры использования
Утилита sed это мощный потоковый редактор текста с поддержкой регулярных выражений. С помощью sed вы можете заменять шаблоны текста (причем непосредственно в файле!), удалять строки (элементы массива), выводить подходящие по маске строки (подобно grep). Редактор sed поддерживает применение нескольких команд и расширенный синтаксис регулярных выражений (при котором не нужно экранировать спец. символы).
Важно!
В sed нет поддержки опережающих и ретроспективных проверок в регулярках! Для замены с использованием расширенного синтаксиса regex используйте:
find . -type f -name '*.blade.php' -exec perl -p -i -e 's/(?<!\{)\{\{(?!\{)/\{!!/g' {} \;
Внимание!
В sed
довольно проблемно работать с символом перевода строки! Самое удобное решение — это:
echo "text" | perl -pe 's/\n/_/'
Шаблон:
sed [-opt] 's/regex/replace/flag' input-file
sed 's/regex/replace/flag' # замена найденных подстрок
sed '1,5s/regex/replace/gi' # замена только в указанном диапазоне строк
sed -r 's/regex/replace/g' # расширенный синтаксис regex (со спец символами)
sed 's/regex//g' # удалить найденные подстроки
sed '/regex/d' # удалить строки подходящие по маске
sed -n 2p # вывести 2ю строку
sed -n '/composer/p' # вывести только строки подходящие по маске
sed 's/1-9/&/p' # & при замене означает сам ОБРАЗЕЦ
В качестве разделителей можно использовать любые символы (напрмиер: #
, @
). Match части (которые внутри круглых скобок) доступны как \1
, \2
, \n
.
Опции утилиты:
-p вывести на экран
-d удалить
-i выполнять изменения непосредственно в файле
-n не выводить результат замены/поиска на экран (--quiet, --silent)
-e указывает на передачу инструкции (команда замены/удаления или выражение для поиска/фильтрации). Нужен, если Вы передаете более 1 инструкции
-E расширенный regex, ближе к JavaScript, Go. Активны спец символы: [0-9]+
-r расширенный regex синтаксис. Спец символы активны по умолчанию (--regexp-extended)
-P perl-совместимый regex синтаксис
-s consider files as separate rather than as a single continuous long stream (--separate)
Флаги строки-команды (указывать в конце маски):
g глобальный поиск/замена, а не только первое совпадение
i,-l регистро-независимый поиск
p, печать найденных подстрок
d удалить строки
Примеры
Фильтрация строк
Вывести строки 1-5:
sed '1,5p'
head -5
Вывести файлы соответствующие маске:
ls | sed -n '/composer/p'
Строки длиннее 80 символов:
sed -n '/^. $/d'
Удалить последние N=2 символа:
echo "latest" | sed "s/..$//" # late
Извлечение подстрок
Вырезать / запомнить последние N=4 символа:
echo "latest" | sed "s/.*\(....$\)/\1/" # test
#sed, #regexp, #bash
String.prototype.split() — JavaScript | MDN
Метод split()
разбивает объект String
на массив строк путём разделения строки указанной подстрокой.
str.split([separator[, limit]])
Параметры
separator
- Необязательный параметр. Указывает символы, используемые в качестве разделителя внутри строки. Параметр
separator
может быть как строкой, так и регулярным выражением. Если параметр опущен, возвращённый массив будет содержать один элемент со всей строкой. Если параметр равен пустой строке, строкаstr
будет преобразована в массив символов. limit
- Необязательный параметр. Целое число, определяющее ограничение на количество найденных подстрок. Метод
split()
всё равно разделяет строку на каждом сопоставлении с разделителемseparator
, но обрезает возвращаемый массив так, чтобы он содержал не болееlimit
элементов.
Метод split()
возвращает новый массив.
Если разделитель separator
найден, он удаляется из строки, а подстроки возвращаются в массиве. Если разделитель опущен, массив будет содержать только один элемент, состоящий из всей строки. Если разделитель является пустой строкой, строка str
будет преобразована в массив символов.
Если разделитель является регулярным выражением, содержащим подгруппы, то каждый раз при сопоставлении с разделителем, результаты (включая те, что не определены) захвата подгруппы будут помещаться внутрь выходного массива. Однако, не все браузеры поддерживают эту возможность.
Примечание:
Если строка является пустой строкой, метод split()
вернёт массив, состоящий из одной пустой строки, а не пустой массив.
Пример: использование метода
split()
В следующем примере определяется функция, которая разбивает строку на массив строк, используя указанный разделитель. После разбиения строки, функция отображает сообщения, показывающие оригинальную строку (до разбиения), используемый разделитель, количество элементов в массиве и сами эти элементы.
function splitString(stringToSplit, separator) {
var arrayOfStrings = stringToSplit.split(separator);
console.log('Оригинальная строка: "' + stringToSplit + '"');
console.log('Разделитель: "' + separator + '"');
console.log('Массив содержит ' + arrayOfStrings.length + ' элементов: ' + arrayOfStrings.join(' / '));
}
var tempestString = 'И как хорош тот новый мир, где есть такие люди!';
var monthString = 'Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек';
var space = ' ';
var comma = ',';
splitString(tempestString, space);
splitString(tempestString);
splitString(monthString, comma);
Пример сгенерирует следующий вывод:
Оригинальная строка: "И как хорош тот новый мир, где есть такие люди!" Разделитель: " " Массив содержит 10 элементов: И / как / хорош / тот / новый / мир, / где / есть / такие / люди! Оригинальная строка: "И как хорош тот новый мир, где есть такие люди!" Разделитель: "undefined" Массив содержит 1 элементов: И как хорош тот новый мир, где есть такие люди! Оригинальная строка: "Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек" Разделитель: "," Массив содержит 12 элементов: Янв / Фев / Мар / Апр / Май / Июн / Июл / Авг / Сен / Окт / Ноя / Дек
Пример: удаление пробелов из строки
В следующем примере метод split()
ищет 0 или более пробелов, за которыми следует точка с запятой, за которой снова следуют 0 или более пробелов, и, если этот шаблон найден, удаляет пробелы из строки. Переменная nameList
является массивом, возвращённым в результате работы метода split()
.
var names = 'Гарри Трамп ;Фрэд Барни; Хелен Ригби ; Билл Абель ;Крис Ханд ';
console.log(names);
var re = /\s*;\s*/;
var nameList = names.split(re);
console.log(nameList);
Пример напечатает две строки; на первой строке напечатана оригинальная строчка, а на второй — получившийся массив.
Гарри Трамп ;Фред Барни; Хелен Ригби ; Билл Абель ;Крис Ханд Гарри Трамп,Фред Барни,Хелен Ригби,Билл Абель,Крис Ханд
Пример: возврат ограниченного числа подстрок
В следующем примере метод split()
ищет 0 или более пробелов в строке и возвращает первые три найденных подстроки.
var myString = 'Привет, мир. Как дела?';
var splits = myString.split(' ', 3);
console.log(splits);
Вывод скрипта будет следующим:
Привет,,мир.,Как
Пример: захват подгрупп
Если параметр separator
содержит подгруппы, сопоставившиеся результаты также будут присутствовать в возвращённом массиве.
var myString = 'Привет 1 мир. Предложение номер 2.';
var splits = myString.split(/(\d)/);
console.log(splits);
Вывод скрипта будет следующим:
Привет ,1, мир. Предложение номер ,2,.
Пример: обращение строки при помощи метода
split()
var str = 'фывапролд';
var strReverse = str.split('').reverse().join('');
Бонус: используя оператор ===
, можно проверить, являлась ли строка палиндромом.
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) |
Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |
php-regex-replace
Пользователи также искали:
php,
программирования,
языков,
языке,
языков программирования,
язык,
языки,
самые,
язык программирования,
языках,
рейтинг,
программирования php,
языка,
рейтинг языков программирования,
какой язык,
php список,
язык программирования учить,
самые популярные языки,
список,
самые востребованные языки,
какой,
востребованные,
популярные,
учить,
списке,
список языков,
языка программирования,
топ языков программирования,
программисты,
github,
. ..
preg_replace, более 4 — PHP — Форумы SitePoint
рпкамп:
И я думал, что у меня все в порядке с регулярным выражением, но это выходит у меня из головы. Не могли бы вы рассказать о том, что делают разные части?
Конечно, я постараюсь объяснить.
Регулярное выражение по существу разделено на две части, одна довольно простая (но чрезвычайно полезная), а другая немного менее простая, но в основном потому, что она немного уродливая. Эти части разделяются оператором чередования (вертикальной чертой, |), так что основное регулярное выражение может соответствовать любой из двух альтернатив.| 1)
0
(? = 0 {0,3} (?: 1 | $))
Две сложные части используют поисковые запросы (поиск назад и вперед, соответственно).
Часть а. смотрит «позади» текущей совпадающей позиции либо для начала строки темы, либо для числа 1. Таким образом, учитывая указанную выше строку темы, эта часть будет успешно соответствовать в начале строки и сразу после любого числа единиц.
Часть б. соответствует только числу 0. Итак, создавая то, что может быть сопоставлено, это только ноль, которому предшествует начало строки, или число 1.Пока достаточно просто?
Часть c. немного сложнее. Он смотрит вперед (после числа 0), чтобы увидеть, есть ли между 0 и 3 числами 0, за которыми следует либо число 1, либо конец строки. Это часть, которая ограничивает количество последовательных нулей от 1 до 4 включительно (или, как указано в OP, «все нулевые последовательности, длина которых меньше 5»). Если это непонятно, вот несколько примеров. Допустим, мы только что сопоставили ноль (серым цветом) и хотим проверить этот прогноз:
-
[color = gray] 0 [color = green] 000 [/ color] [color = red] 0 [/ color] [/ color]
= FAIL
, потому что после нуля из части b стоит четвертый ноль. -
[color = grey] 0 [color = green] 1 [/ color] [/ color]
= PASS
, потому что есть следующий 1 -
[color = grey] 0 [color = green] <конец строки> [/ color] [/ color]
= PASS
, потому что ноль был в конце строки
Это конец сложной части основного регулярного выражения. Итак, на английском языке это соответствует:
- любой 0,
- либо в начале строки, либо перед ним 1,
- и в конце строки или до трех нулей.
Визуально эта часть будет соответствовать:
[цвет = серый] [цвет = зеленый] 0 [/ цвет] 0011 [цвет = зеленый] 0 [/ цвет] 1 [цвет = зеленый] 0 [/ цвет] 011000001 [цвет = зеленый] 0 [/ цвет] 11 [цвет = зеленый] 0 [/ цвет] 111 [цвет = зеленый] 0 [/ цвет] 1 [цвет = зеленый] 0 [/ цвет] 000111000001 [цвет = зеленый] 0 [/ цвет] 000 [/ цвет]
Отлично, но это соответствует только первой из последовательностей до 4 нулей! Вот тут-то и приходит на помощь супер-краткая другая альтернатива.
Соответствие \ G0
Утверждение начала совпадения \\ G
является ключевым здесь и требует некоторых пояснений.Это специальная проверка, которая выполняется только тогда, когда текущая позиция совпадения находится в начальной точке совпадения.
Начальная точка сопоставления — это точка, в которой начинается текущий поиск сопоставления («ну, да», некоторые могут сказать). На практике это означает, что точки находятся либо в самом начале всего процесса (когда начальная точка сопоставления является началом строки), либо при повторном запуске после замены (когда начальная точка сопоставления по существу является точкой после замены).Альтернатива в ретроспективе для другой части является избыточной!) Или сразу после точки, в которой сопоставление начинается снова после замены (то есть после сопоставления первого 0 в последовательности).
Опять же, опишем это визуально. Учитывая строку темы ababcabab
, давайте посмотрим, что произойдет:
-
preg_replace ('/ \\ Gab /', '| $ 0', 'ababcabab')
дает
[color = green] | ab | ab [/ color] cabab
(замененные части выделены зеленым) -
preg_replace ('/ ab /', '| $ 0', 'ababcabab')
дает[color = green] | ab [/ color] [color = green] | ab [/ color] c [color = green] | ab [/ color] [color = green] | ab [/ color]
Разница выше вызвана \ G
, что означает, что буквы ab
могут быть сопоставлены только в начальной точке. После сопоставления ab
перед c
начальная точка будет перед этой буквой c
. c
не соответствует регулярному выражению, поэтому он пропускается и проверяется следующий символ, но теперь он не находится в начальной точке совпадения, поэтому \\ G
не выполняется.
Итак, вернемся к \\ G0
, соответствует:
- любой 0,
- начальная точка матча (т.е. после замены)
Собираем части вместе
Наше полное регулярное выражение ищет:
- любой 0, то есть
[список] - в начале строки или перед ним 1 и
- в конце строки или до трех нулей;
[/ список]
или
[список] - следует сразу за одним из вышеперечисленных.
[/ список]
Регулярные выражения PHP — Функции PHP — Учебник по PHP
- Дом
- PHP Учебник
- Функции PHP
- Регулярные выражения PHP
Регулярные выражения — это шаблоны, определяющие список символов. Их можно использовать для поиска, замены и другой работы со строками, но чаще всего они используются для проверки форм, поскольку формы позволяют пользователям вводить неизвестные данные.Здесь мы узнаем, как определить, использует ли адрес электронной почты правильный синтаксис.
В прошлом PHP поддерживал два метода сопоставления с образцом (POSIX и PCRE). Теперь PHP прекращает поддержку методов POSIX, оставляя PCRE (Perl-совместимые регулярные выражения) нашей темой для этого руководства.
Регулярные выражения имеют собственный набор функций:
Есть два типа регулярных выражений. «Буквальные» символы — это те, которые соответствуют самим себе, а «метасимволы» — это те, которые имеют другое значение.
«Буквальные» символы могут представлять собой отдельный символ, слово, фразу и т. Д., Которые принимаются буквально по номиналу. Используя функцию preg_match (), давайте посмотрим на пример буквального регулярного выражения. (Примечание. Шаблоны литералов и метасимволов должны быть заключены в косую черту «/» разделители , как показано в нашем примере ниже.)
php
$ string = "На какой стороне курицы больше всего перьев?";
if (preg_match ("/ цыпленок /", $ строка)) {
эхо $ строка.«
»;
echo «Снаружи.»;
}
?>
Так как в нашем примере совпадение найдено, вопрос и ответ будут повторены. Если вы измените слово «курица» в любом из случаев, где оно найдено, совпадение больше не будет, и утверждения не будут повторяться.
Метасимволы по понятным причинам более сложны, чем их буквальные аналоги, но после небольшого изучения их можно интерпретировать.Начнем с простой темы: классы персонажей.
Классы символов определяют, какие символы допустимы в шаблоне. [a-z], [A-B] и [0-9] — все это примеры классов символов, охватывающих широкий диапазон символов, но вы можете создать свой собственный, заключив допустимые символы в квадратные скобки. Примеры: [dgefgh] соответствует d, g, e, f и т. Д., А [l-p] соответствует l, m, n, o & p.
Классы символов с отрицанием указывают, какие символы неприемлемы в шаблоне.l-p] означает, что l, m, n, o и p недопустимы.
А теперь давайте кратко рассмотрим основные возможности, которые позволяют регулярные выражения.
Синтаксис | Пример | Будет соответствовать | Описание |
---|---|---|---|
az | [az] | a, b, c, d и т. Д. | Представляет все и любое количество символов нижнего регистра | AZ | [AZ] | A, B, C и т. Д.cat $ | Указывает, что шаблон должен соответствовать началу и концу строки |
| | cat | dog | Обозначает альтернативный образец (означает «Или») | |
. | ct | cat, cot, cut, c8t и т. Д. | Представляет любой отдельный символ, кроме новой строки |
\ i | \ icat | cat, CAT, cAt, CAt и т. Д. | Представляет нечувствительность к регистру |
\ b | \ bcat | кошка (не рогоз, кошки и т. Д.) | Представляет «Границу слова» (без дополнительных символов) |
\ d | c \ dt | c0t, c1t, c2t, c3t, c4t, c5t и т. Д. | Представляет любую одиночную цифру (0-9) |
\ D | c \ Dt | cat, cot, cut и т. Д. | Представляет любой одиночный символ, кроме цифры (az) |
\ w | c \ wt | cat, c9t, c_t и т. д. | обозначает любую букву, цифру и подчеркивание |
\ W | c \ Wt | c $ t, c @ t, c & t и т. д. | Представляет любой символ, кроме символов слова |
\ s | c \ st | ct | Представляет любые пробелы, такие как пробел, перевод строки или табуляция |
\ S | c \ St | c9t, c_t и т. д. | представляет любой символ, кроме символа пробела |
\ | c \ .t | ct | экранирует специальные символы, чтобы их можно было использовать в шаблоне для представления самих себя |
(cat) | Используется для группировки параметров вместе путем захвата подшаблонов | ||
[] | [abcde] | Используется для совместной группировки параметров путем формирования классов | |
+ | означает | cat + | |
* | cat * | 9 0212 означает, что предшествующий символ или выражение не должно встречаться больше или меньше | |
? | кот? | означает, что предшествующего символа или выражения должно быть ноль или одно вхождение. | |
{} | кот {2} | означает, что должно быть определенное количество (2) вхождений предыдущего символа. или Выражение | |
{} | cat {5,7} | Означает, что должно быть определенное число (от 5 до 7) вхождений предшествующего символа или выражения |
Теперь, когда у вас есть все Из этого запомненного, давайте перейдем к нашему долгожданному примеру, где мы определим, использует ли адрес электронной почты правильный синтаксис.[_a-z0-9 -] + (\. [_ a-z0-9 -] +) * @ [a-z0-9 -] + (\. [a-z0-9 -] +) * (\. [az] {2,3}) $ / «;
if (preg_match ($ выражение, $ email)) {
echo «Формат письма правильный!»;
} else {
echo «Неверный формат электронной почты!»;
}
?>
Попробуйте поиграть с адресом электронной почты, чтобы увидеть, какие форматы позволяют использовать шаблон regex , составьте несколько собственных шаблонов, возможности безграничны. .. Ну, почти.
Работа с регулярными выражениями (preg_) и строками UTF-8 в PHP — блог Макса Ивака
Шаблоны регулярных выражений \ w, \ d, \ s не будут работать должным образом для нелатинских букв в строке UTF-8, когда вы используете функции preg_ (например, preg_match, preg_split, preg_replace).
Прежде всего, вы должны использовать модификатор / u для правильной работы со строками UTF-8.
Одним из лучших решений типичных задач является использование экранированных шаблонов \ P, \ p и \ X, которые относятся к свойствам символов Unicode.
Начнем с нескольких примеров.
Примеры
1. Соответствие буквенно-цифровому символу (включая буквы UTF-8):
здесь:
\ p {L}, \ pL — буква UTF-8
\ p {N} — номер UTF-8
2. Соответствует определенному символу UTF-8 или диапазону символов.
2.1. Найдите букву «А» (ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА А С ТЯЖЕЛЫМ).
Заглянув в таблицу кодировки UTF-8, мы видим, что эта буква имеет код «\ x80C3»
$ s = 'ваша строка в UTF-8 с символом À внутри'; $ res = preg_match ('/ \ x {80c3} / u', $ s);
2.\ x9 \ xA \ xD \ x20- \ x {D7FF} \ x {E000} — \ x {FFFD} \ x {10000} — \ x {10FFFF}] @ u ‘, $ text)
Ссылка: http://www.w3.org/TR/2000/REC-xml-20001006#charsets
Немного теории о PCRE
PCRE — Perl-совместимые регулярные выражения
// из http://www.pcre.org/pcre.txt
По умолчанию в режиме UTF-8 символы со значениями больше 128 никогда не соответствуют \ d, \ s или \ w и всегда соответствуют \ D , \ S и \ W. Эти последовательности сохраняют свое первоначальное значение до того, как стала доступна поддержка UTF-8, в основном из соображений эффективности.
Однако, если PCRE скомпилирован с поддержкой свойств Unicode и установлен параметр PCRE_UCP, поведение изменяется, так что свойства Unicode используются для определения типов символов, как показано ниже:
\ d — любой символ, которому соответствует \ p {Nd} (десятичная цифра)
\ s — любой символ, который соответствует \ p {Z}, плюс HT, LF, FF, CR
\ w — любой символ, который соответствует \ p {L } или \ p {N} совпадают, плюс подчеркивание
Свойства символов Юникода
Когда PCRE построен с поддержкой свойств символов Unicode, доступны три дополнительных escape-последовательности, которые соответствуют символам с определенными свойствами.
\ p {xx} символ со свойством xx
\ P {xx} символ без свойства xx
\ X расширенная последовательность Unicode
Имена свойств, представленные как xx выше, ограничены именами сценариев Unicode, общими свойствами категории, «Any», которые соответствуют любому символу (включая новую строку), и некоторыми специальными свойствами PCRE (описанными в следующем разделе).
Например:
\ p {греческий}
\ P {Han}
Последовательности новой строки
За пределами класса символов по умолчанию escape-последовательность \ R соответствует любой последовательности новой строки Unicode. В режиме, отличном от UTF-8, \ R эквивалентен следующему: (?> \ R \ n | \ n | \ x0b | \ f | \ r | \ x85)
Читать документацию полностью:
http://www.pcre.org/pcre.txt
Список литературы
// с http://www.pcre.org/pcre.txt
—- \ p {**}, где можно использовать следующие символы вместо **:
Поддерживаются следующие коды свойств общей категории:
C Другое
Cc Control
Cf Format
Cn Unassigned
Co Private use
Cs Surrogate
L Letter
Ll Строчная буква
Lm Модифицирующая буква
Lo Другая буква
Lt Заглавная буква
Lu Заглавная буква
M Mark
Mc Метка расстояния
Me Ограничивающая метка
Mn Метка без промежутка
N Число
Nd Десятичное число
Nl Буквенное число
Нет Другое число
P Пунктуация
Pc Пунктуация соединителя
Pd Пунктуация тире
Pe Закрытая пунктуация
Pf Окончательная пунктуация
Pi Начальная пунктуация
Po Другая пунктуация
Ps Открытая пунктуация
S Symbol
Sc Символ валюты
Sk Символ-модификатор
Sm Математический символ
So Другой символ
Z Разделитель
Zl Разделитель строк
Zp Разделитель абзацев
Zs Разделитель пробелов
Регулярное выражение | PHP | Codelabs
Регулярные выражения — это не что иное, как последовательность или набор символов. Они обеспечивают основу для функциональности сопоставления с образцом.
Используя регулярное выражение, вы можете искать конкретную строку внутри другой строки, вы можете заменять одну строку другой строкой и можете разбить строку на множество частей.
PHP предлагает функции, специфичные для двух наборов функций регулярных выражений, каждая из которых соответствует определенному типу регулярного выражения. Вы можете использовать любой из них в зависимости от вашего удобства.
- Регулярные выражения POSIX
- Регулярные выражения стиля PERL
Регулярные выражения POSIX
Структура регулярного выражения POSIX не отличается от структуры типичного арифметического выражения.Различные элементы (операторы) комбинируются для образования более сложных выражений.
Самое простое регулярное выражение — это выражение, которое соответствует одному символу, например g, внутри строк, таких как g, haggle или bag.
Давайте объясним несколько концепций, используемых в регулярном выражении POSIX. После этого мы познакомим вас с функциями, связанными с регулярными выражениями.
Кронштейны
Скобки ([]) имеют особое значение при использовании в контексте регулярных выражений.Они используются для поиска ряда символов.
Старший № | Выражение и описание |
---|---|
1 | [0-9] Соответствует любой десятичной цифре от 0 до 9. |
2 | [a-z] Соответствует любому символу от строчного a до строчного z. |
3 | [A – Z] Соответствует любому символу от A до Z в верхнем регистре. |
4 | [a-Z] Соответствует любому символу от нижнего a до верхнего Z. |
Диапазоны, показанные выше, являются общими, вы также можете использовать диапазон [0–3] для сопоставления любой десятичной цифры в диапазоне от 0 до 3 или диапазон [bv] для сопоставления любого символа нижнего регистра в диапазоне от b до v.
Кванторы
Частота или положение заключенных в квадратные скобки последовательностей символов и отдельных символов может быть обозначено специальным символом.Каждый особый символ имеет определенный оттенок. Знаки +, *,?, {Int. range}, а флаги $ следуют за последовательностью символов.
Старший № | Выражение и описание |
---|---|
1 | p + Соответствует любой строке, содержащей хотя бы один p. |
2 | p * Соответствует любой строке, содержащей ноль или более p. |
3 | п? Соответствует любой строке, содержащей ноль или более p.Это просто альтернативный способ использования p *. |
4 | p {N} Соответствует любой строке, содержащей последовательность из N p |
5 | p {2,3} Соответствует любой строке, содержащей последовательность из двух или трех p. |
6 | p {2,} Соответствует любой строке, содержащей последовательность не менее двух p. |
7 | p $ Соответствует любой строке с буквой p в конце.. {2} $ Соответствует любой строке, содержащей ровно два символа. |
4 | p (hp) * Соответствует любой строке, содержащей p, за которой следует ноль или более экземпляров последовательности php. |
Предопределенные диапазоны символов
Для удобства программирования доступно несколько предопределенных диапазонов символов, также известных как классы символов. Классы символов определяют весь диапазон символов, например алфавит или набор целых чисел:
старший№ | Выражение и описание |
---|---|
1 | [[: alpha:]] Соответствует любой строке, содержащей буквенные символы от aA до zZ. |
2 | [[: digit:]] Соответствует любой строке, содержащей цифры от 0 до 9. |
3 | [[: alnum:]] Соответствует любой строке, содержащей буквенно-цифровые символы от aA до zZ и от 0 до 9. |
4 | [[: space:]] Соответствует любой строке, содержащей пробел. |
Функции PHP Regexp POSIX
В настоящее время PHP предлагает семь функций для поиска строк с использованием регулярных выражений в стиле POSIX:
Старший № | Выражение и описание |
---|---|
1 | ereg () Функция ereg () ищет в строке, указанной в строке, строку, заданную шаблоном, возвращая истину, если шаблон найден, и ложь в противном случае. |
2 | ereg_replace () Функция ereg_replace () ищет строку, указанную шаблоном, и заменяет шаблон заменой, если найдена. |
3 | eregi () Функция eregi () ищет в строке, заданной шаблоном, строку, заданную параметром string. При поиске регистр не учитывается. |
4 | eregi_replace () Функция eregi_replace () работает точно так же, как ereg_replace (), за исключением того, что поиск шаблона в строке не чувствителен к регистру. |
5 | split () Функция split () разделит строку на различные элементы, границы каждого элемента основаны на наличии шаблона в строке. |
6 | spliti () Функция spliti () работает точно так же, как и ее родственная функция split (), за исключением того, что она не чувствительна к регистру. |
7 | sql_regcase () Функцию sql_regcase () можно рассматривать как служебную функцию, преобразующую каждый символ в строке входных параметров в выражение в квадратных скобках, содержащее два символа. |
Регулярные выражения стиля PERL
Регулярные выражения в стиле Perl похожи на их аналоги в POSIX. Синтаксис POSIX можно использовать почти взаимозаменяемо с функциями регулярных выражений в стиле Perl. Фактически, вы можете использовать любой из квантификаторов, представленных в предыдущем разделе POSIX.
Давайте объясним несколько концепций, используемых в регулярных выражениях PERL. После этого мы познакомим вас с функциями, связанными с регулярными выражениями.
Мета-символы
Мета-символ — это просто алфавитный символ, которому предшествует обратная косая черта, которая придает комбинации особое значение.
Например, вы можете искать большие денежные суммы, используя метасимвол ‘\ d’: / ([\ d] +) 000 /. Здесь \ d будет искать любую строку числового символа.
Ниже приводится список метасимволов, которые могут использоваться в регулярных выражениях стиля PERL.
Персонаж | Описание |
---|---|
. | одиночный символ |
\ с | пробельный символ (пробел, табуляция, новая строка) |
\ S | непробельный символ |
\ d | цифра (0-9) |
\ D | нецифровый |
\ w | словесный символ (a-z, A-Z, 0-9, _) |
\ Вт | несловесный символ |
[aeiou] | соответствует одиночному символу в данном наборе |
[^ aeiou] | соответствует одному символу за пределами данного набора |
foo | бар |
Модификаторы
Доступно несколько модификаторов, которые могут значительно упростить вашу работу с регулярными выражениями, например, чувствительность к регистру, поиск в нескольких строках и т. Д.и операторы $ теперь будут соответствовать границе новой строки вместо границы строки
Функции PHP Regexp, совместимые с PERL
PHP предлагает следующие функции для поиска строк с использованием Perl-совместимых регулярных выражений
старший№ | Функции и описание |
---|---|
1 | preg_match () Функция preg_match () ищет в строке шаблон, возвращая истину, если шаблон существует, и ложь в противном случае. |
2 | preg_match_all () Функция preg_match_all () сопоставляет все вхождения шаблона в строку. |
3 | preg_replace () Функция preg_replace () работает так же, как ereg_replace (), за исключением того, что регулярные выражения могут использоваться во входных параметрах шаблона и замены. |
4 | preg_split () Функция preg_split () работает точно так же, как split (), за исключением того, что регулярные выражения принимаются в качестве входных параметров для шаблона. |
5 | preg_grep () Функция preg_grep () ищет все элементы input_array, возвращая все элементы, соответствующие шаблону регулярного выражения. |
6 | preg_ quote () Цитировать символы регулярного выражения |
Регулярное выражение PHP | W3Schools | Tutorialspoint
PHP Регулярные выражения — это последовательность символов, используемых для функции сопоставления с образцом.Используя регулярное выражение, вы можете найти конкретную строку в другой строке, заменить одну строку другой строкой, используя регулярное выражение. и вы можете разделить строку на множество частей. PHP предлагает множество функций в рамках функции сопоставления с образцом.
Есть 2 типа регулярных выражений:
- Расширенный POSIX
- Perl-совместимый
ereg, eregi,… — версии POSIX, а preg_match, preg_replace,… — версия Perl. Важно, чтобы при использовании регулярных выражений, совместимых с Perl, выражение должно быть заключено в разделители, например, в косую черту (/).[a-zA-Z0-9 ._-] + @ [a-zA-Z0-9 -] + \. [a-zA-Z.] {2,5} $
Функция | Описание |
---|---|
ereg_replace () | Функция ereg_replace () находит строку, указанную шаблоном, и заменяет шаблон заменой, если она найдена. |
eregi_replace () | Функция eregi_replace () работает аналогично функции ereg_replace (), за исключением того, что поиск шаблона в строке не чувствителен к регистру. |
preg_replace () | Функция preg_replace () работает аналогично ereg_replace (), за исключением того, что во входных параметрах шаблона и замены можно использовать регулярные выражения. |
preg_match () | Функция preg_match () находит строку в шаблоне и возвращает истину, если шаблон совпадает с ложью, в противном случае. |
Выражение | Описание |
---|---|
[0-9] | Соответствует любой десятичной цифре от 0 до 9. |
[а-я] | Соответствует любому символу от строчного a до строчного z. |
[А-Я] | Соответствует любому символу от A до Z в верхнем регистре. |
[а-я] | Соответствует любому символу от нижнего а до верхнего Z. |