Scheme provides powerful pattern matching facilities, through libraries such match.ss and plt-match.ss.
Pattern matching in Scheme is based around a paper by Duba and Wright entitled "Pattern Matching for Scheme". The essence of pattern matching is to establish a set of rules in the form
(pattern expression)
Where pattern is a pattern that you're attempting to match and expression is the code that should be executed on a successful match. In general, you can view pattern matching as being similar to regular expressions, but acting on S-expressions instead of text strings. As in Regular Expressions, patterns allow you to bind parts of the pattern to variables that can be used in the expression part. Unlike (most) regular expression systems, patterns can be used to do things like
1. Match against the fields of a struct.
1. Match based on the result of evaluating an expression.
1. Use quasiquoting to make pattern templates.
Pattern matching is useful in handling markup (HTML or XML translated to S-Expressions), dispatching functions, and analyzing Scheme code, among other tasks.