In

computer science, when dealing with

finite automata and

regular expressions, epsilon (ε) is used to denote "the

empty string". It should be noted that ε,
∅, and {ε} are all different things (this is a common mistake made by beginning CS students). ε is of type "

string", whereas ∅ and {ε} are of type
"set of strings"; ∅ does not contain ε, whereas {ε} (obviously) does. However, ∅* is equivalent to ε. ε is the

identity for

concatenation:

εR ≡ Rε ≡ R

Regular expressions in UNIX have extended operations beyond the basic three (union, concatenation, and closure); however, they can all be represented by standard regular
expressions. The '?' operation in UNIX regular expressions stands for 'zero or one occurrences of'; i.e., R? is the same as (R | ε).

In a finite automaton, a transition on ε means the automaton moves from one state to another without consuming a character; automatons with epsilon-transitions are one type of non-deterministic finite automaton. Epsilon-transitions are necessary to convert regular expressions into finite automata.