Это комплексный подход к обработке текстов, другими словами это встроенный язык програмирования внутри других языков, он позволяет разбирать (парсить тексты) согласно заданым шаблонам (маскам, pattern), проверять тексты на валидность шаблонам, а также искать знакомые шаблонны в большых текстах - вырывая из огромных текстов толко нужные кусочки
При написании регулярного выражения необходимо заключать шаблон в разделители. Разделителем может быть любой символ не являющийся буквой, цифрой, обратной косой чертой или каким-либо пробельным символом. Часто используемыми разделителями являются косые черты (/), знаки решетки (#) и тильды (~). На это нет ни каких предписаний, используйте тот символ который считаите более удобным для себя (
Ниже представлены примеры шаблонов с корректными разделителями:
/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%
Следом за разделителем обычно указывают модификаторы - они служат для расширения функционала ругулярных выражений. Модификаторы не обязательны по этому их можно и упустить. Наиболее популярные модификаторы представлены в списке ниже, но флагов насамом деле несколько больше , о них можно почитать
Флаг указывается после паттерна (порядок флагов значения не имеет), например, вот так: @[0-9]$@smi