Regex
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
Regular expressions is used to search in text.
Standard character classes
A character class is created by putting things inside a []
So gr[ae]y match both gray and grey
Use a - inside to specify a range. [0-9] for a single digit between 0 and 9.
It's possible to specify more then one range and single characters. Ex [0-9a-fq] is 0-9, a-f or q.
Use a caret after the opening square to negate the class. [^0-9] will match any non number character.
Standard Character set
Some character sets is so common that shorthand names already exist for them
\d match a single character digit
\w Match alphanumeric characters and _.
\s Match white space characters.
Quantifiers
Examples
%x (\w+)
Search for %x and capture the word behind it.
%xx (.*?) %xx
Capture the text between %xx and %xx. To use the capture text in a search and replace use \1 where the number is the index of the capture group. So use <b>\1</b> as the replace text to replace %xx Hello world %xx with <b>Hello World</b>.
^@title\s+(.*)
At start of line (^) find @title, skip any number of spaces behind it (\s+) and then capture the rest of the text (.*).
^(#+)\s+(.*)
At start of line capture any number of # (#+). Skip space and then capture the rest of the text.