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 supports most POSIX regular expression constructs, many are detailed below. Our regular expressions have the following configuration and limits:
/
they must be escaped: \\/
.
will match characters beyond the ASCII range.\\1
, \\2
, etc).i
).m
). Line anchors will match paragraphs in Oracle text, instead of the entire block.o:/tap/
will work while o:/tap/gi
will not.\n
character for newlines in all text fields across our entire database. No fields include \r
or \f
.\a
), null-bytes (\0
), or other esoteric control characters.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 |
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) |
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} |
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 |
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 |