Regular Expressions

You can use forward slashes // instead of quotes with the type://, t:// oracle://, o://, flavor://, ft://, and name:// keywords to match those parts of a card using regular expressions.

Regular expressions are very powerful, here are some examples of fancy searches you can make with regular expressions:

Scryfall Regex Flavor

Scryfall supports most POSIX regular expression constructs, many are detailed below. Our regular expressions have the following configuration and limits:

  • If your expression includes forward slashes / they must be escaped: \\/
  • Scryfall regular expressions are Unicode-aware. The . will match characters beyond the ASCII range.
  • Backreferences are not supported (\\1, \\2, etc).
  • All regular expressions are case-insensitive (i).
  • All regular expressions are “multiline” mode (m). Line anchors will match paragraphs in Oracle text, instead of the entire block.
  • All characters in your expression are significant and whitespace will be matched (sometimes listed as “tight mode”).
  • You cannot add configuration to regular expressions on Scryfall. For example o:/tap/ will work while o:/tap/gi will not.
  • Scryfall regular expressions are match-only. Scryfall does not support extracting data from capture groups or performing substitutions.
  • Scryfall uses only the \n character for newlines in all text fields across our entire database. No fields include \r or \f.
  • The Scryfall database does not include bells (\a), null-bytes (\0), or other esoteric control characters.

Scryfall Extensions

Scryfall includes the following additional, non-standard regex features:

Syntax Feature
~ An automatic alias for the current card name or “this spell” if the card mentions itself
\\sm Short-hand escape for any mana symbol
\\ss Short-hand escape for any card symbol
\\spt Short-hand escape for a X/X power/toughness expression
\\spp Short-hand escape for a +X/+X power/toughness expression
\\smm Short-hand escape for a -X/-X power/toughness expression

Atoms

The following atoms are supported:

Atom Description
. Any single character
[kf] Bracket expression matching a single character which is k or f (or any other group of literal characters)
[^kf] Bracket expression matching a single character which is not k or f (or any other group of literal characters)
[f-k] Bracket expression matching a single character which is between f through k in Unicode, inclusive (or any other range of of literal characters)
(re) A group that matches the expression re
(re|fe) A group that matches either the expression re or fe. | is the pipe character
\\k A literal escaped k (or any other character)
k The character k (or another non-meta character)

Quantifiers

The following quantifiers are supported:

Quantifier Description
* A sequence of 0 or more matches of the atom
+ A sequence of 1 or more matches of the atom
? A sequence of 0 or 1 matches of the atom
{M} A sequence of exactly M matches of the atom, where M is a number
{M,} A sequence of M or more matches of the atom
{M,N} A sequence of M through N (inclusive) matches of the atom; M cannot exceed N
*? Non-greedy version of *
+? Non-greedy version of +
?? Non-greedy version of ?
{M}? Non-greedy version of {M}
{M,}? Non-greedy version of {M,}
{M,N}? Non-greedy version of {M,N}

Anchors and Lookarounds

The following anchors/lookarounds are supported:

Anchor Description
^ Matches at the beginning of a line or the beginning of the field
$ Matches at the end of a line or the end of the field
\\b Matches the boundary of a word
(?=re) Positive lookahead: matches at any point where a substring matching re begins
(?!re) Negative lookahead: matches at any point where no substring matching re begins
(?<=re) Positive lookbehind: matches at any point where a substring matching re ends
(?<!re) Negative lookbehind: matches at any point where no substring matching re ends

Character Classes

The following character classes are supported:

Class Description
\\n Matches a newline
\\s Matches any whitespace
\\d Matches a single digit character: 0-9
\\w Matches any word character: A through z and 0 through 9
\\uHHHH Matches a character whose hexadecimal value is HHHH, where HHHH is exactly four hexadecimal digits