Una delle nostre applicazioni filtra i file in determinate directory, estrae alcuni dati da essa ed esporta un documento dai dati estratti. L'algoritmo per l'estrazione dei dati dipende dal file e finora usiamo regex per selezionare l'algoritmo da utilizzare, ad esempio .*\.txt
verrà elaborato dall'algoritmo A, foo[0-5]\.xml
verrà elaborato da algo B, ecc.
Tuttavia ora abbiamo bisogno di alcuni file da elaborare insieme. Ad esempio, in un caso abbiamo bisogno di due file, foo.*\.xml
e bar.*\.xml
. Parte delle informazioni da estrarre esiste nel file foo e l'altra parte nel file bar . Inoltre, dobbiamo assicurarci che la wild card sia compatibile. Ad esempio, se ci sono 6 file
foo1.xml
foo23.xml
bar1.xml
bar9.xml
bar23.xml
foo4.xml
Mi aspetterei che foo1 e bar1 siano identificati come un gruppo, e foo23 e bar23 come un altro gruppo. bar9 e foo4 non hanno una coppia, quindi non saranno trattati.
Ora, dal momento che il filtro è configurato dall'utente, abbiamo bisogno di un modello che possa esprimere il requisito di cui sopra. Non penso che tu possa esprimere un significato come sopra nella regex standard. (foo|bar).*\.xml
corrisponderà a tutti i 6 file sopra e non possiamo identificare quale file è accoppiato per un particolare file.
Esiste uno schema standard in grado di esprimerlo? O qualche idea su come modificare regex per supportare questo, che può essere implementato facilmente?