È possibile creare un'espressione regolare in stile PCRE che abbinerà solo una lettera in una lista solo una volta?Regex per utilizzare ogni lettera una sola volta?
Ad esempio, se si hanno le lettere "lrsa" e si tenta che corrispondono a un elenco di parole contro:
^[lrsa]*m[lrsa]*$
si sta andando per corrispondenza "LAMS" (valido), ma anche "lama" (non valido per i nostri scopi perché hai avuto solo una "a"). Se il set di lettere era "lrsaa", dovresti abbinare "lamas".
Ciò è possibile con le espressioni regolari o devo gestirlo a livello di codice?
Questo non funzionerà come '[lrsaa]' 'è uguale a [lrsa]'. – Gumbo
Giusto, ed è il mio problema. Puoi limitare con [lrsa] {4} ma ad ogni modo corrisponderà ancora "lass". – gtcaz
Quello che puoi fare è abbinare sia quelli che vuoi sia alcuni extra che non hai. Con un'iterazione delle partite, sarebbe banale filtrare gli extra indesiderati. – erisco