php регулярные выражения. Карманы - что это?

Термин "карман" по отношению к регулярным выражениям употребляет Д.Котеров в своём труде "PHP7 в подлиннике" (стр.390).

Карман - переменная, в которую попадёт часть строки, выделенной регулярным выражением. Например, из даты (полное совпадение с регуляркой) необходимо выделить только месяц (первый карман), или отдельно месяц и отдельно год (первый и второй карман).

Выражения, которые Вы хотите "положить в карманы", помещаются в круглые скобки.

preg_match('/(.+)([0-9]+)[a-z]+/', $sourceString, $matches);

/* В нулевом элементе массива будет вся строка совпадения */
var_dump($matches[0]); 
/* В первом элементе массива будет содержимое первого кармана,
 содержимое в первых скобках:  <em>.+</em> */
var_dump($matches[1]);
/* Во стором элементе массива будет содержимое второго кармана:
 <em>[0-9]+</em> */
var_dump($matches[2]); 

Ещё пример здесь.

Источники

  • https://ru.stackoverflow.com/questions/122778/%d0%9a%d0%b0%d1%80%d0%bc%d0%b0%d0%bd%d1%8b-%d0%b2-%d1%80%d0%b5%d0%b3%d1%83%d0%bb%d1%8f%d1%80%d0%bd%d1%8b%d1%85-%d0%b2%d1%8b%d1%80%d0%b0%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f%d1%85
  • https://books.google.ru/books?id=kLCnDgAAQBAJ&pg=PA380&lpg=PA380&dq=%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5+%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F+%D0%BA%D0%BE%D1%82%D0%B5%D1%80%D0%BE%D0%B2&source=bl&ots=0KIipl0hrZ&sig=ACfU3U1ms1aoaoHaAgLLsDW9Ls_MPOOfeg&hl=ru&sa=X&ved=2ahUKEwie0drQhMjgAhUp8KYKHaqCDcIQ6AEwB3oECAAQAQ#v=onepage&q=%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BA%D0%BE%D1%82%D0%B5%D1%80%D0%BE%D0%B2&f=false