Зіставляння із взірцем або зіставлення із шаблоном () — метод аналізу та опрацювання структур даних у мовах програмування, заснований на виконанні певних інструкцій залежно від збігу досліджуваного значення з тим чи іншим взірцем (шаблоном), яким може бути константа, предикат, тип даних або інша конструкція, підтримувана мовою.

Зазвичай є можливість задати більше одного взірця та пов'язаної з ним дії.

Зіставляння із взірцем часто зустрічається у функційних мовах програмування, наприклад, мовах сімейства ML та Haskell, зокрема у вигляді вартових виразів.

Зразки послідовностей (наприклад, текстовий рядок) можна зіставляти з регулярними виразами.

Порівняння з точним значенням Найпростішим варіантом є зіставляння з константою. У цьому разі зіставляння із взірцем еквівалентне умовному оператору або конструкції switch (case) в імперативних мовах.

Розглянемо, наприклад, обчислення логічного заперечення.

В OCaml :let neg x = match x with | false -> true | true -> false ;;Тут значення після символа | є взірцями, а вирази після -> обчислюються в разі збігу аргументу x з одним із взірців.

Той самий приклад з використанням умовного оператора:let neg x = if x = false then true else false

Використання внутрішньої структури об'єкта Обчислення суми списку:let rec sum l = match l with | [] -> 0 | x :: xs -> x + (sum xs) ;;У цьому прикладі аргумент функції sum зіставляється зі значенням «порожній список» або із взірцем «голова :: хвіст» (де :: — оператор додавання елемента на початок списку).

Алгебричні типи даних

Як взірець може застосовуватися конструктор значення типу:type animal = Dog of string | Cat of string ;;

let say x = match x with | Dog (x) -> x ^ "says 'woof'" | Cat (x) -> x ^ "says 'meow'"

Зіставляння з рядком Мови з розвиненими засобами опрацювання тексту, такі як AWK та SNOBOL, підтримують зіставляння з регулярним виразом.

Приклад на AWK — підрахунок кількості входжень слів foo або bar:/foo|bar/ { foobar++ }

END { print foobar }