Регулярные выражения (regular expressions — regex) — одна из "темных" сторон практического компьютерного программирования. Спросите у любого программиста — и вы имеете большие шансы услышать, что он в той или иной мере сталкивался с проблемами при их использовании (или, хуже того, вовсе их избегает).
На самом деле регулярные выражения, даже достаточно замысловатые, не так уж сложны для понимания. В основе своей они представляют собой способ описания шаблонов (patterns) текста с использованием единого набора строк. В отличие от простой операции поиска-замены, такой как замена всех вхождений "Marco" на "Tabini", регулярные выражения обеспечивают большую гибкость, например, поиск всех вхождений букв "Маг", за которыми следует "со" или "г" и так далее.
Впервые регулярные выражения были описаны в пятидесятых годах прошлого века математиком по имени Клин (S. С. Kleene), который формализовал модели, предложенные Уорренном Маккалохом (Warenn McCuloch) и Уолтером Питтсом (Walter Pitts) при описании работы нервной системы. Регулярные выражения, однако, тогда не использовались в компьютерных науках, пока Кен Томпсон (Ken Thompson), впоследствии ставший одним из авторов первоначальной версии операционной системы UNIX, не задействовал их в качестве средства поиска и замены в своем текстовом редакторе qed.
Регулярные выражения, таким образом, протоптали себе дорожку в среду UNIX (и позже в стандарт POSIX), а также в Perl, где стали одной из самых сильных сторон этого языка. В настоящий момент РНР поддерживает оба стандарта. Идея состоит в том, чтобы программисты на Perl почувствовали себя как дома, а начинающие могли использовать более простые выражения POSIX.
|