Regex stands for Regular expression. It's a string of text that allows you to create patterns that help match, locate, and manage text.
It's a technique that developed in theoretical computer science and formal language theory. For a computer user or programmer, it's a way to express how a computer program should look for a specified pattern in text and then what the program is to do when each pattern match is found. The concept came in the 1950s when the American mathematician Stephen Cole Kleene formalized the description of a regular language. The concept came into common use with Unix text-processing utilities. Since the 1980s, different syntaxes for writing regular expressions exist.
It's used in every programming language like C++, Java, and Python. Perl is a great example of a programming language that utilizes regular expressions. However, it's only one of the many places you can find regular expressions. Regular expressions can also be used from the command line and in text editors to find text within a file.
Regular expressions are used in search engines, search and replace dialogs of word processors and text editors.
The importance of Regex in programming
A regular expression, often called a pattern, is an expression used to specify a set of strings required for a particular purpose. A simple way to specify a finite set of strings is to list its elements or members. There are often more concise ways to specify the desired set of strings.
Pattern matching is very important while we are working to validate text input. Here, regular expression plays an important role. Patterns are very flexible and provide us with a way to make our own pattern to validate the input.
Regular expressions in this sense can express the regular languages, exactly the class of languages accepted by deterministic finite automata. There is, however, a significant difference in compactness. Some classes of regular languages can only be described by deterministic finite automata whose size grows exponentially in the size of the shortest equivalent regular expressions.
"Regular expression" engines implement features that cannot be described by the regular expressions in the sense of formal language theory.
There is more than one way to construct a regular expression to achieve the results.
It's possible to write an algorithm that, for two given regular expressions, decides whether the described languages are equal; the algorithm reduces each expression to a minimal deterministic finite state machine and determines whether they are isomorphic (equivalent).
Algebraic laws for regular expressions can be obtained using a method by Gischer which is best explained.
The redundancy can be eliminated by using Kleene star and set union to find an interesting subset of regular expressions that are still fully expressive, but perhaps their use can be restricted.
Many features found in virtually all modern regular expression libraries provide an expressive power that far exceeds the regular languages. For example, many implementations allow grouping subexpressions with parentheses and recalling the value they match in the same expression (backreferences). This means that, among other things, a pattern can match strings of repeated words.
Many tools, libraries, and engines that provide such constructions still use the term regular expression for their patterns. This has led to a nomenclature where the term regular expression has different meanings in formal language theory and pattern matching. For this reason, some people have taken to using the term regex, regexp, or simple pattern to describe the latter.
Many text editors support it. You can do replacements with it. It allows a configuration point where you can change some behavior that’s accessed by the code but isn’t part of the compiled bits. There are other places where you can do that, like config files, but using regexes in some places here will potentially allow you to perform a task that you hadn’t anticipated or written code for without changing binaries.
Regex is used in Google analytics in URL matching in supporting search and replace in most popular editors like Sublime, Notepad++, Brackets, Google Docs, and Microsoft Word.
Stock photo from Imagentle