Тут публікуються короткі замітки про PHP, Linux, Unit Testing, DB, OOP тощо, витяги зі статей, книг, відео, курсів та інших матеріалів.
Тепер тобі більше не потрібно перегортати тонни інформації ;)
@genkovich — написати автору каналу.
Post #48
4.35K
Regular Expression
При виде слова "RegExp" у разработчиков начинает дергаться глаз. Ведь каждый из на с помнит десятки потраченных часов, ради того, чтобы покрыть все возможные кейсы и таки сделать регулярку, которая будет работать. Здесь я опишу пару советов о том, как немного упростить себе жизнь при написании RegExp.
👉 Выберите удобный разделитель (delimiter)
Речь идет о символах, в которые мы оборачиваем наше выражение. Чаще всего в примерах используется slash "
❓ Но зачем выбирать другой разделитель? Всё дело в том, что все вхождения символа разделителя в выражение должны быть экранированы, потому на выходе мы получаем:
Скобочными группами называется то, что находится внутри () скобок. Найденные результаты будут переданы в $matches.
👉 Используйте символьные классы
Это также поможет сделать ваше выражение более читабельным. Самый распространенный класс
👌 Так-же следует упомянуть, что при использовании выражений с поддержкой unicode (флаг
Весь перечень можно посмотреть здесь.
#junior #regexp #source
При виде слова "RegExp" у разработчиков начинает дергаться глаз. Ведь каждый из на с помнит десятки потраченных часов, ради того, чтобы покрыть все возможные кейсы и таки сделать регулярку, которая будет работать. Здесь я опишу пару советов о том, как немного упростить себе жизнь при написании RegExp.
👉 Выберите удобный разделитель (delimiter)
Речь идет о символах, в которые мы оборачиваем наше выражение. Чаще всего в примерах используется slash "
/"/(foo|bar)/i❗️На самом деле для разделителя можно выбрать любой символ, например
~,!, @, #, $. Разделителями НЕ могут быть буквенно-цифровые символы (AZ, az и 0-9), многобайтовые символы (Такие как Emojis 😢) и обратная косая черта (\). ❓ Но зачем выбирать другой разделитель? Всё дело в том, что все вхождения символа разделителя в выражение должны быть экранированы, потому на выходе мы получаем:
preg_match('/^https:\/\/example.com\/path/i', $uri);
// или
preg_match('~^https://example.com/path~i', $uri);
👉 Именуйте скобочные группы (группы захвата)Скобочными группами называется то, что находится внутри () скобок. Найденные результаты будут переданы в $matches.
$pattern = '~Price: (£|€)(\d+)~';Именуя скобочные группы, мы сразу получаем два преимущества: это упростит чтение регулярного выражения, а также имена будут отображены в $matches;
// или
$pattern = '~Price: (?<currency>£|€)(?<price>\d+)~';
👉 Используйте символьные классы
Это также поможет сделать ваше выражение более читабельным. Самый распространенный класс
\d - представляет собой одну цифру (эквивалентно [0-9]), при этом \D (в верхнем регистре) эквивалентно [^0-9] то есть не является цифрой. То есть использование верхнего регистра является обратным основному выражению.\w соответствует слову (может состоять из букв, цифр и подчёркивания) A-Za-z0-9_\s соответствует символу пробела (включая табуляцию и прерывание строки). соответствует любому символу👌 Так-же следует упомянуть, что при использовании выражений с поддержкой unicode (флаг
/u), вы можете использовать еще огромное количество символьных классов \p{}. Например:\p{Sc} — любой знак валюты\p{P} — любой знак пунктуации\p{L} — любая буква из любого языкаВесь перечень можно посмотреть здесь.
#junior #regexp #source
- 👍 1
