Along with the alphabet, a regular expression incorporates the symbols * and |. The * operator (unary) represents 0 or more repeated instances of an entity, while | (binary) represents a selection of either entity. Adjacent entities are simply concatenated. The * takes precedence over concatenation, which takes precedence over |. Parentheses override operator precedence as usual. For example, (0|1)* stands for all possible binary strings, 0|1* stands for either a 0 or an arbitrarily long string of 1's, and 01* stands for 0 followed by an arbitrarily long string of 1's.
The symbol E represents the null string, and can be used like any other alphabetic character. Thus, (0|E)(1(0|E))* stands for all binary strings without adjacent zeros.
Computer languages such as ed, sed, grep, and perl employ regular expressions, but there are many more features for your convenience. For instance, s+ = ss*, s? = (s|E), s{7,} = sssssss+, and so on. Check out `man perlre' for more details.