Ho bisogno di confrontare le espressioni jolly del file system per vedere se i loro risultati si sovrappongono, solo esaminando/confrontando le espressioni.Controllo collisione negli schemi di ricerca dei nomi dei file con caratteri jolly
Per esempio, stiamo costruendo un'utilità che ordina i file da uno (o più percorsi) in cartelle separate basate su espressioni jolly del file system. Ad esempio: * .txt va nella cartella a, * .doc va nella cartella b, e così via. I caratteri jolly che vorremmo supportare sarebbero * e?
Voglio essere in grado di determinare analizzando solo le espressioni jolly, se sarebbero in conflitto/si sovrappongono.
Per esempio, se ho le seguenti espressioni:
*.x.y *.y
Essi sarebbero in conflitto (sovrapposizione), perché la seconda espressione * .y includerebbe risultati * .x.y. (ad esempio A.x.y corrisponderebbe a entrambe le espressioni)
Mi avvicino a questo costruendo una struttura ad albero usando l'utilizzo di tutte le espressioni, immaginando che l'atto stesso di costruire un albero fallirà se le espressioni contrastano.
For example: *.x a.b a.c b.d might create a tree like +-*-.-x | start +--+ | +-b | | +-a-.-+-c | | +-b-.-d
Se provo ad aggiungere il b.x modello, l'albero sarebbe successo seguendo il percorso * .x, e quindi dire che il modello esiste già.
Sto andando nella direzione corretta? O c'è un algoritmo noto per attaccare questo?
'*' significa 'istanze 0-a-molti del set di caratteri precedente'. Un'espressione che inizia con '*' non ha senso. –
@AndrewShepherd "espressioni jolly di file"! = "Regex". –
È possibile definire con cura la grammatica di una "espressione jolly" legale? Ci sono molti standard diversi tra cui scegliere. –