Come unire più espressioni regolari (javascript) in una singola?Unione di espressioni regolari
Ad esempio, dato [/^abcd$/,/^abxy$/,/^abz$/]
l'output sarà /^ab(cd|xy|z)$/
.
È anche computazionalmente possibile?
Come unire più espressioni regolari (javascript) in una singola?Unione di espressioni regolari
Ad esempio, dato [/^abcd$/,/^abxy$/,/^abz$/]
l'output sarà /^ab(cd|xy|z)$/
.
È anche computazionalmente possibile?
È abbastanza facile creare uno strumento simile per casi semplici. Basta mettere ciascun modello in parentesi e unirli a "|". Così, per il tuo esempio serie di modelli diventa:
/(^abcd$)|(^abxy$)|(^abz$)/
Su un secondo pensiero, parentesi potrebbero non essere necessario, in modo che questo farà:
/^abcd$|^abxy$|^abz$/
'/ ((?:^abcd $) | (?:^abxy $) | (?:^abz $)) /' forse questa è una soluzione migliore per raggrupparlo in 1 gruppo corrispondente? – HamZa
A condizione che JavaScript riesca a regex il supporto (? :) usarli è davvero meglio. Tuttavia, direi che racchiuderli tutti in un'altra parentesi non è necessario e risolverebbe un problema leggermente diverso. – spbnick
sì, quello farà il trucco, ma non nella forma più corta, immagino che avrei dovuto essere più preciso - come posso farlo in a, chiamiamolo "forma canonica", come nel mio esempio? – user1088045
Partecipare è semplice, basta o ('|') le diverse espressioni. La tua domanda implica che vuoi che lo strumento "semplifichi" anche l'espressione. Come si misura la complessità di una regexp? –
Lo "strumento" che ho usato in passato è questo modulo Perl http://search.cpan.org/~dankogai/Regexp-Optimizer-0.15/lib/Regexp/Optimizer.pm Unisciti a loro come dice il commento sopra e quindi eseguire la regex attraverso di esso e sarà ottimizzato. –
@cryptic ツ quanto successo ha avuto questo strumento sperimentale? se uno è scettico sui risultati, starei lontano da esso a meno che tu non voglia solo imparare l'espressione regolare – gillyspy