Une expression régulière (abréviation : Regex/RegExp) est un langage de motifs textuels qui utilise une seule chaîne pour décrire et faire correspondre une série de chaînes satisfaisant certaines règles syntaxiques. Son histoire remonte aux années 1950, lorsque le neurologue Warren McCulloch et le mathématicien Walter Pitts ont proposé un modèle mathématique de neurones ; plus tard, le mathématicien Stephen Kleene a proposé en 1956 une description algébrique des「ensembles réguliers」basée sur celui-ci. Ken Thompson, père d'Unix, a implémenté pour la première fois les expressions régulières dans l'éditeur QED à la fin des années 1960, et depuis lors, les expressions régulières sont devenues une fonctionnalité centrale de la chaîne d'outils Unix (grep, sed, awk, vi).
Dans les langages de programmation modernes, les expressions régulières sont presque une capacité standard : RegExp de JavaScript, le module re de Python, java.util.regex de Java, la classe Regex de .NET, le paquet regexp de Go fournissent un support regex. Les expressions régulières sont largement utilisées dans la validation de formulaires (e-mail/téléphone/pièce d'identité), la recherche et le remplacement de texte (rechercher et remplacer dans les éditeurs), l'analyse de logs (extraire les logs ERROR), le crawling web (extraction de contenu HTML), le nettoyage de données (ETL), la correspondance de routes, le filtrage d'entrée et la protection de sécurité (règles WAF), entre autres scénarios.
Les concepts centraux des expressions régulières incluent : classes de caractères (\d chiffres, \w caractères de mot, \s espaces blancs), quantificateurs (* zéro ou plus, + un ou plus, ? zéro ou un, {n,m} nombre spécifié), ancres (^ début, $ fin, \b limite de mot), groupes ((...) groupe de capture, (?:...) groupe sans capture, (?<name>...) groupe nommé), alternance (|), ensembles de caractères ([a-z]), assertions de recherche ((?=...) assertion positive avant, (?!) assertion négative avant), etc. Maîtriser regex peut considérablement améliorer l'efficacité du traitement de texte, mais vous devez également faire attention à éviter les pièges de performance tels que le ReDoS.