Riassunto

Questo generatore regex trasforma una lista di host, percorsi, versioni, domini email o codici di stato HTTP in un pattern con escape per regole di targeting, matcher di Prometheus e filtri di log. Scegli tra semantica di ricerca (JavaScript, Go, grep) e match completo (Prometheus, Alertmanager, Envoy), poi testa le righe nel browser. Nulla lascia il tuo computer.

Tool gratuito

Generatore regex per il targeting dei rilasci e i filtri di log

Incolla gli host, i percorsi, le versioni o i codici di stato da far corrispondere. Ottieni un pattern con escape per il tuo motore regex, poi verificalo su righe reali prima che arrivi in produzione.

Laptop notturno con output di terminale filtrato su una scrivania da sviluppatore

Genera una regex da una lista di valori

Scegli cosa stai confrontando, inserisci i valori e scegli il motore. Il pattern e i risultati dei test si aggiornano mentre scrivi.

Pattern generato

    Come funziona

    Cosa fa il generatore con i tuoi valori

    Applica l'escape a ogni letterale

    Punti, slash, parentesi e segni più nei tuoi valori vengono sottoposti a escape, quindi api.internal.example.com non può corrispondere a api-internal-example-com. Le allowlist scritte a mano falliscono qui più che altrove.

    Scrive per il motore che usi

    I motori di ricerca hanno bisogno di ^ e $ per fissare una corrispondenza. Prometheus, Alertmanager ed Envoy confrontano l'intera stringa e richiedono .* per le regole di prefisso e suffisso. Scegli il motore e il generatore adatta il pattern.

    Testa prima di rilasciare

    Ogni riga di test riceve un badge di corrispondenza o di non corrispondenza usando il pattern che stai per copiare. Aggiungi di proposito i falsi positivi: checkout-v22 accanto a checkout-v2, example.com.evil.io accanto a example.com.

    Dove i pattern falliscono

    La regex che ha superato la review e ha comunque svegliato qualcuno

    La maggior parte degli incidenti legati alle regex nella configurazione di rilasci e alerting non è esotica. Una regola di targeting pensata per coprire tre host interni ha coperto anche un sosia. Un alert matcher scritto con ancore che Prometheus non richiede ha escluso in silenzio un servizio. Un filtro di log che confrontava una sottostringa ha nascosto proprio gli errori che doveva contare. Il pattern è raramente troppo sofisticato. Quasi sempre è troppo permissivo, oppure è stato testato solo su righe che dovevano corrispondere. Una regola che controlla un rilascio va testata prima di tutto sulle righe che non devono corrispondere.

    • Applica l'escape ai punti in ogni hostname
    • Sappi se il tuo motore applica le ancore da solo
    • Testa i falsi positivi, non solo i casi che devono corrispondere
    • Preferisci una lista letterale a una regex quando l'insieme è piccolo e stabile
    Corridoio di rack server con luci di stato verdi
    Utilizzo

    Da una lista di valori a un pattern di cui ti fidi

    1. 1

      Scegli il tipo di corrispondenza

      Valori esatti per le allowlist di host e chiavi di flag, prefisso per i gruppi di route, codici di stato per le regole di alert, famiglie di versioni per il targeting dei rilasci per versione dell'app.

    2. 2

      Scegli il motore

      Usa la ricerca per il codice e grep. Usa il match completo per i matcher di Prometheus, le route di Alertmanager ed Envoy. Questa sola scelta elimina l'errore più comune sulle ancore.

    3. 3

      Incolla i falsi positivi nel box di test

      Aggiungi un host simile, una versione vicina e un codice di stato appena fuori dall'intervallo. Se uno di questi risulta corrispondente, stringi i valori prima di copiare il pattern.

    Domande frequenti

    Questo generatore regex è gratuito e invia i miei valori da qualche parte?
    È gratuito e funziona interamente nel tuo browser. I valori che digiti, il pattern e le righe di test non vengono mai inviati a un server. L'unica richiesta è un contatore anonimo che registra che lo strumento è stato usato.
    Quale motore regex supporta l'output?
    Due comportamenti coprono la maggior parte del lavoro infrastrutturale. La ricerca si adatta a JavaScript, Go regexp, grep -E e PCRE, dove un pattern può corrispondere ovunque nella riga, quindi lo strumento aggiunge ^ e $ quando servono. Il match completo si adatta a Prometheus, Alertmanager ed Envoy, che trattano l'intera stringa come corrispondenza, quindi lo strumento aggiunge .* dove vuoi una regola di prefisso, suffisso o contenimento.
    Perché Prometheus ignora le mie ancore ^ e $?
    I matcher di etichette di Prometheus sono completamente ancorati. L'espressione env=~"prod" viene valutata come ^(?:prod)$, quindi un pattern scritto per grep corrisponderà in silenzio meno di quanto ti aspetti, o nulla. Scegli il motore a match completo e il generatore scrive il pattern nel modo in cui Prometheus lo legge.
    Il pattern evita il backtracking catastrofico?
    I pattern generati usano solo letterali, classi di caratteri limitate e alternanze piatte. Non contengono quantificatori annidati, che sono la causa abituale del backtracking incontrollato in JavaScript e PCRE. I motori basati su RE2, come Go ed Envoy, girano comunque in tempo lineare.
    Come vengono gestiti i caratteri speciali?
    Ogni valore letterale viene sottoposto a escape. Un host come api.internal.example.com diventa api\.internal\.example\.com, quindi il punto non corrisponde più a nessun carattere. È l'errore più comune nelle allowlist scritte a mano, e lascia passare api-internal-example-com.
    Posso usare il pattern in una regola di targeting di un feature flag?
    Sì, se la tua piattaforma di flag supporta un operatore regex o matches-pattern su un attributo del contesto come hostname, path o email utente. Verifica quale motore usa prima di incollare. Se offre solo operatori di corrispondenza esatta o di inizio stringa, una lista di valori letterali è più sicura di una regex.
    Cosa non fa?
    Non deduce un pattern dagli esempi e non genera intervalli numerici o lookahead. Costruisce un pattern dalla lista di valori che gli dai, seguendo regole che puoi leggere. Le righe di test vengono valutate con il motore JavaScript, quindi verifica il comportamento specifico del motore nel tuo stack prima di rilasciare.

    Subordina il rilascio allo SLO, non all'intuito

    Le regole di targeting decidono chi riceve una modifica. L'AI Pilot di upstreamapi decide se il rilascio prosegue e torna indietro da solo quando il tasso di errore supera la soglia del tuo SLO.