gives the first ei to match pattern, or Missing["NotFound"] if none matching pattern is found.


gives the value of rhs corresponding to the first ei to match pattern.


gives default if no element matching pattern is found.


finds only objects that appear on levels specified by levelspec.


represents an operator form of FirstCase that can be applied to an expression.

Details and Options

  • The first argument to FirstCase need not have head List and can be an association.
  • FirstCase[expr,pattern:>rhs] evaluates rhs only when the pattern is found.
  • In FirstCase[{e1,e2,},pattern,default], default is only evaluated if none of the ei match.
  • FirstCase[pattern][expr] is equivalent to FirstCase[expr,pattern].
  • FirstCase uses standard level specifications:
  • nlevels 1 through n
    Infinitylevels 1 through Infinity
    {n}level n only
    {n1,n2}levels n1 through n2
  • The default value for levelspec in FirstCase is {1}.
  • A positive level n consists of all parts of expr specified by n indices.
  • A negative level -n consists of all parts of expr with depth n.
  • Level -1 consists of numbers, symbols, and other objects that do not have subparts.
  • Level 0 corresponds to the whole expression.
  • With the option setting Heads->True, FirstCase looks at heads of expressions and their parts.
  • FirstCase traverses the parts of expr in a depth-first order, with leaves visited before roots.


open allclose all

Basic Examples  (3)

Find the first element in a list matching an integer:

Find the first non-integer:

Return the x from inside the first f[x_] matched:

Pick an element from an Association:

Scope  (7)

Use the operator form of Cases:

Find the first order pair:

Find its sum:

Pick out the first nonzero element:

Use :> to evaluate only after explicit elements have been found:

Specify a custom default value:

Examine the elements of a matrix using a level specification:

Pick elements from nested associations:

Options  (1)

Heads  (1)

Find a symbol among the elements of an expression:

Also include the head of the expression in the search:

Properties & Relations  (4)

The default value is only evaluated if needed:

FirstCase returns only the first match:

Cases returns all matches:

FirstCase can be implemented with a combination of Cases and Replace:

FirstCase is similar to SelectFirst except that it uses a pattern instead of a function:

Select the first list that has a sum of elements less than 10:

Use SelectFirst to get the same result:

Possible Issues  (1)

A rule transforms the matching element into its right side:

Use HoldPattern to treat the rule itself as a pattern:

Wolfram Research (2014), FirstCase, Wolfram Language function,


Wolfram Research (2014), FirstCase, Wolfram Language function,


Wolfram Language. 2014. "FirstCase." Wolfram Language & System Documentation Center. Wolfram Research.


Wolfram Language. (2014). FirstCase. Wolfram Language & System Documentation Center. Retrieved from


@misc{reference.wolfram_2023_firstcase, author="Wolfram Research", title="{FirstCase}", year="2014", howpublished="\url{}", note=[Accessed: 21-April-2024 ]}


@online{reference.wolfram_2023_firstcase, organization={Wolfram Research}, title={FirstCase}, year={2014}, url={}, note=[Accessed: 21-April-2024 ]}