 Finite state automata, explained in an earlier series, describe exactly the same languages as regular expressions. Every regular expression can be converted to a finite state automaton, and every finite state automaton can be expressed as a regular expression. For example, our regular expression for numbers backslash d plus can be converted to this automaton, a non-accepting start state and an accepting state, with two transitions. You may notice that in this automaton there is no transition for anything other than a digit. We could include these other transitions by introducing a trap state, as our regular expression only allows digits in its language. But usually this is left out for simplicity. If a symbol has no transition out of a state, we assume it goes to a trap state, and hence the associated string is not accepted as part of the language. So what's all this about languages? Well, here we are not talking about the usual human languages, like the variations of English. We're talking about formal languages, each of which being a set of strings that are accepted by some rule. For example, backslash d plus produces a language that includes strings like 203, 57 and even 000, but not b17 or negative 12. Regular expressions and finite state automaton describe a very particular type of formal language known as regular languages. These may be one of the most basic formal languages, so they can't describe everything, but they still have a huge number of uses. Variable names, numbers, URLs, email addresses and phone numbers can all be described by regular languages. Computer scientists find it easier to read regular expressions than finite state automata, but computers are better at following automata. So usually we design an expression, then use a computer program to convert it to an automaton, which is then used as required.