Lex è un programma progettato per generare scanner, noti anche come tokenizer, che riconoscono modelli lessicali nel testo. Lex è un acronimo che sta per "generatore di analizzatore lessicale". È inteso principalmente per i sistemi basati su Unix. Il codice per Lex è stato originariamente sviluppato da Eric Schmidt e Mike Lesk.
Lex può eseguire semplici trasformazioni da solo, ma il suo scopo principale è facilitare l'analisi lessicale, l'elaborazione di sequenze di caratteri come il codice sorgente per produrre sequenze di simboli chiamate token da utilizzare come input per altri programmi come i parser. Lex può essere utilizzato con un generatore di parser per eseguire analisi lessicali. È facile, ad esempio, interfacciare Lex e Yacc, un programma open source che genera codice per il parser nel linguaggio di programmazione C.
Lex è proprietario ma le versioni basate sul codice originale sono disponibili come open source. Questi includono una versione semplificata chiamata Flex, acronimo di "generatore di analizzatore lessicale veloce", nonché componenti di OpenSolaris e Plan 9.