Most of regex is just typing the letters you want
Beginners get scared by \b\w+@\w+\.\w+\b and forget that the simplest, most common regex is just… the literal string.
The pattern cat matches the substring cat. Anywhere it appears. cat in scatter, cat in concatenate, cat in cat. That's it. No magic, no special meaning. Most characters in regex are literal — they match themselves.
Which characters are NOT literal
A small set of characters have special meaning. They're called metacharacters. Memorize this list — it's the entire "why does my pattern do something weird?" troubleshooting guide:
. ^ $ * + ? ( ) [ ] { } | \
Every other character — letters, digits, spaces, hyphens (mostly), commas, colons — is literal. If you want a metacharacter to be literal, you put a backslash in front of it: \. matches a literal dot.
The implicit "contains"
By default, cat means "is the string cat somewhere inside the input?" not "is the entire input the string cat?" That's a critical distinction. To match the *whole* input, you anchor the pattern with ^ and $ (covered in the Classes track) — ^cat$ matches only the exact string cat.
Different tools default differently. grep and Python re.search() are "contains." Python re.fullmatch() and JavaScript form-validation regex are "whole string." When a pattern surprises you, this is the first thing to check.