Sto sviluppando un'applicazione in cui gli utenti immettono un'espressione regolare come criterio di filtro, tuttavia non voglio che le persone siano (facilmente) in grado di immettere .*
(vale a dire qualsiasi cosa). Il problema è che se uso semplicemente if (expression == ".*")
, questo potrebbe essere facilmente aggirato inserendo qualcosa come .*.*
.È possibile testare un'espressione regolare per vedere se si riduce a *
Qualcuno sa di un test che potrebbe prendere un pezzo di regex e vedere se è essenzialmente .*
ma in una forma leggermente più elaborata?
I miei pensieri sono:
ho potuto vedere se l'espressione è di uno o più ripetizioni di
.*
, (vale a dire se corrisponde(\.\*)+
(citazioni/fughe potrebbero non essere del tutto esatto, ma si ottiene l'idea). Il problema è che ci possono essere altre forme di crei una partita globale (ad esempio con$
e^
) che sono troppo esaustivo per pensare di anticipo, lasciate lungo test.ho potuto testare alcuni casuale generato stringhe con esso e assumere t Se tutti passano, l'utente ha inserito un modello di corrispondenza globale. Il problema con questo approccio è che potrebbero esserci situazioni in cui l'espressione è sufficientemente stretta e seleziono solo stringhe errate.
Pensieri, qualcuno?
(FYI, l'applicazione è in Java, ma credo che questo è più di una questione algoritmica di una per una determinata lingua.)
OK, penso che alcuni dei caratteri asterisco che ho inserito potrebbero essere stati rimossi. Il test di uguaglianza nel primo para deve averne uno, così come il testo alternativo che potrebbe essere usato da una persona subdola. In ogni caso, sono sicuro che ottieni il punto ... – user1056788
Wow, hai bisogno di un'espressione regolare per testare determinate espressioni regolari, come meta. Sii interessante vedere le risposte a questo. Vedi la [citazione in cima a quel post] (http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html): ora hai 3 problemi ! – Jeroen
Simile a http://stackoverflow.com/questions/2131239/distanza-tra-regolare-espressione, ma non un duplice, penso. – dsolimano