File: grep.info, Node: Fundamental Structure, Next: Character Classes and Bracket Expressions, Up: Regular Expressions 3.1 Fundamental Structure ========================= In regular expressions, the characters ‘.?*+{|()[\^$’ are “special characters” and have uses described below. All other characters are “ordinary characters”, and each ordinary character is a regular expression that matches itself. The period ‘.’ matches any single character. It is unspecified whether ‘.’ matches an encoding error. A regular expression may be followed by one of several repetition operators; the operators beginning with ‘{’ are called “interval expressions”. ‘?’ The preceding item is optional and is matched at most once. ‘*’ The preceding item is matched zero or more times. ‘+’ The preceding item is matched one or more times. ‘{N}’ The preceding item is matched exactly N times. ‘{N,}’ The preceding item is matched N or more times. ‘{,M}’ The preceding item is matched at most M times. This is a GNU extension. ‘{N,M}’ The preceding item is matched at least N times, but not more than M times. The empty regular expression matches the empty string. Two regular expressions may be concatenated; the resulting regular expression matches any string formed by concatenating two substrings that respectively match the concatenated expressions. Two regular expressions may be joined by the infix operator ‘|’. The resulting regular expression matches any string matching either of the two expressions, which are called “alternatives”. Repetition takes precedence over concatenation, which in turn takes precedence over alternation. A whole expression may be enclosed in parentheses to override these precedence rules and form a subexpression. An unmatched ‘)’ matches just itself. Not every character string is a valid regular expression. *Note Problematic Expressions::.