Regular Expressions (regex) - robbiehume/CS-Notes GitHub Wiki
- Mastering Regular Expressions by Jeffrey Friedl: link to PDF
-
RegexOne.com - interactive lessons and exercises to learn regex basics
- regular-expressions.com tutorial
- Codecademy's "Learn the Basics of Regular Expressions" course - Offers hands-on practice with explanations.
- freeCodeCamp's regex curriculum - Integrated into their JavaScript certification
-
Regex101.com - allows you to test and debug regex patterns with explanations
-
RegExr.com - another popular tool for testing and learning regex interactively
- RegexCrossword.com - Offers regex puzzles to improve your skills.
- Regex challenges on platforms like HackerRank or LeetCode
-
.
: any character
-
\.
: period character
-
[abc]
: only a, b, and c
-
[^abc]
: any character but a, b, and c
-
\d
: any digit
-
\D
: any non-digit character
-
[a-z]
: characters a to z; can be any range (a-c)
-
[0-9]
: numbers 0 to 9; can be any range (1-3)
-
\w
: any alphanumeric character
-
\W
: any non-alphanumeric character
-
{m}
: m repetitions; a{3} will match the character exactly 3 times
- Ex.
[abc]{5}
: 5 characters, each of which can be an a, b, or c
-
{m,n}
: m to n repetitions; a{1,3} will match the character no more than 3 times, but no less than once
- Ex.
.{2,6}
: between 2 and 6 of any character
-
*
: 0 or more repetitions;
- Ex.
.*
: 0 or more of any character
-
+
: 1 or more repetitions
- Ex.
[abc]+
: 1 or more of any a, b, or c characters
-
?
: optional character
- Ex.
ab?c
will match either "abc" or "ac" because the b is considered optional
-
\s
: any whitespace character (space, tab, newline, etc.)
- Ex.
.*
: any amount of whitespace
-
\S
: any non-whitespace character
-
\b
: word boundary character; helps find words starting or ending with certain characters
- For vim search, it uses
\<
and \>
instead
- Ex:
\b[Aa]uth
finds any word starting with "Auth" or "auth"
-
^
: starts with; is different than the ^ in [^abc]
- Ex.
^Hello
: only lines that start "Hello"
-
$
: ends with
- Ex.
Bye\.$
: only lines that end with "Bye."
- Can combine
^
and $
: ^mission: successful$
-
()
: () can be used for match groups to extract info from a string
- Ex:
^(IMG\d+\.png$
will only capture the image name
-
Nested groups
: exgtract multiple layers of info
- Ex:
(\w+ (\d+))
turns Jan 1999 into 2 groups: Jan 1999 and 1999
-
|
: can use a pipe to specify multiple different options
- Ex:
(cats|dogs)$
matches "I love cats" and "I love dogs"
-
(?i)
: case-insensitive mode; add it to beginning of regex
⚠️ **GitHub.com Fallback** ⚠️