Ein regulärer Ausdruck (abgekürzt Regex/RegExp) ist eine Textmustsprache, die eine einzelne Zeichenkette verwendet, um eine Reihe von Zeichenketten zu beschreiben und damit übereinzustimmen, die bestimmten syntaktischen Regeln entsprechen. Seine Geschichte reicht bis in die 1950er Jahre zurück, als der Neurologe Warren McCulloch und der Mathematiker Walter Pitts ein mathematisches Neuronenmodell vorschlugen; später schlug der Mathematiker Stephen Kleene 1956 darauf aufbauend eine algebraische Beschreibung「regulärer Mengen」vor. Ken Thompson, der Vater von Unix, implementierte reguläre Ausdrücke erstmals Ende der 1960er Jahre im QED-Editor, und seitdem sind reguläre Ausdrücke zu einer Kernfunktion der Unix-Toolkette (grep, sed, awk, vi) geworden.
In modernen Programmiersprachen sind reguläre Ausdrücke fast eine Standardfunktion – JavaScripts RegExp, Pythons re-Modul, Javas java.util.regex, .NETs Regex-Klasse, Gos regexp-Paket bieten Regex-Unterstützung. Reguläre Ausdrücke werden häufig in der Formularvalidierung (E-Mail/Telefon/Personalausweis), Textsuche und -ersetzung (Suchen und Ersetzen in Editoren), Log-Analyse (Extrahieren von ERROR-Logs), Web-Crawling (HTML-Inhaltsextraktion), Datenbereinigung (ETL), Routenübereinstimmung, Eingabefilterung und Sicherheitsschutz (WAF-Regeln) und anderen Szenarien verwendet.
Zu den Kernkonzepten regulärer Ausdrücke gehören: Zeichenklassen (\d Ziffern, \d Wortzeichen, \s Leerzeichen), Quantifizierer (* null oder mehr, + eins oder mehr, ? null oder eins, {n,m} angegebene Anzahl), Anker (^ Anfang, $ Ende, \b Wortgrenze), Gruppen ((...) Erfassungsgruppe, (?:...) nicht erfassende Gruppe, (?<name>...) benannte Gruppe), Verzweigung (|), Zeichensätze ([a-z]), Lookaround ((?=...) positives Lookahead, (?!) negatives Lookahead) usw. Die Beherrschung von Regex kann die Textverarbeitungseffizienz erheblich steigern, aber Sie sollten auch darauf achten, Leistungsfallen wie ReDoS zu vermeiden.