Regular expressions are a notation used to specify formal languages by defining patterns over strings. They are declarative and can describe the same languages as finite automata. Regular expressions are composed of operators for union, concatenation, and Kleene closure and can be converted to equivalent non-deterministic finite automata and vice versa. They also have an algebraic structure with laws governing how expressions combine and simplify.