regex
termoprogramação
Significa: regular expression
Uma linguagem de padrões compacta para casar e extrair texto.
Uma expressão regular descreve um conjunto de strings, usada para validar, buscar ou dividir texto. É poderosa e concisa a ponto de ser notoriamente difícil de reler; padrões malfeitos também podem ser lentos o bastante para virar um risco de negação de serviço (ver ReDoS).
Expressões regulares são uma pequena linguagem para descrever padrões, e sua fama de ilegíveis vem sobretudo de serem escritas uma vez e lidas muitas. A disciplina que ajuda é a mesma do código: preferir clareza a esperteza, usar o modo estendido com espaços e comentários quando o motor permitir, e nomear o que se captura.
O problema dos dialetos é real e subestimado. POSIX, compatível com Perl, JavaScript e o RE2 do Go diferem no suporte a lookahead, em retrorreferências, no tratamento de Unicode e até em se um padrão que funciona num motor sequer compila em outro. Uma regex copiada de um resultado de busca para um runtime diferente é fonte comum de correspondência sutilmente errada, mais do que de erro explícito.
A dimensão de segurança é o retrocesso catastrófico. Motores com retrocesso podem levar tempo exponencial em certos padrões, então quantificadores aninhados sobre alternativas sobrepostas contra uma entrada forjada viram uma negação de serviço usando apenas um campo de texto. Alguns motores, o RE2 entre eles, garantem tempo linear ao recusar os recursos que causam isso. Se um padrão vem da entrada do usuário, ou roda contra entrada não confiável num servidor, essa garantia vale mais do que a expressividade que custa.
Também conhecido como: regexp, regular expression, regexes