 A regular expression, abbreviated to RE, REGX, REGX and more, is commonly used in software development and searching algorithms for matching patterns and text. They are particularly important for implementing programming languages. Regular expressions are powerful formula for defining patterns to search for, yet they are also very simple. They can be defined with combinations of just four symbols, the clean star, shown as an asterisk, alternation, a vertical bar, and the open and closed parentheses. Say we want to search these terms and conditions for important dates. For simplicity, we'll only worry about numerical dates. There are only a few different formats we can expect dates to be in, right? We just search for day, day, month, month, year, year. However, it could be day, day, month, month, year, year, year, year, if you're being formal, or maybe just day, day, month, month, if you don't need the year. But the first month digit can only be zero or one, and the first day digit can only be zero to three. Sometimes people ignore the zero if the date is only one digit, so it could just be day, month. But for other people the month comes before the day, so we have to account for that too. My word, it's all so complicated, isn't it? Thankfully, we can use regular expressions to simplify writing rules for the patterns we want to match. This series of videos explores the idea more closely, looking at the meaning of these basic symbols, some common extended syntax, and the close connection between regular expressions and finite state automata.