Libreria C # per la corrispondenza del modello leggibile con l'uomo?

.net c# expression-trees regex

Domanda

Qualcuno conosce una libreria C # per la corrispondenza con modelli leggibili dall'uomo? Simile alla regex, ma più amichevole?

Dato un valore stringa, voglio poterlo abbinare a un modello lungo le linee di:

(this AND that) OR "theother"

dove "questo" e "quello" sono espressioni LIKE, e "theother" è una corrispondenza esatta dovuta alle virgolette.

AGGIORNAMENTO: Ok, solo per essere un po 'più chiaro. Il motivo per cui voglio farlo è consentire agli utenti finali di inserire i propri modelli, come valori stringa. Quindi cerco qualcosa che funzioni in modo simile alla regex, ma usa stringhe leggibili dall'uomo che i miei utenti capiranno facilmente

var pattern = "(this AND that) OR \"theother\""; // Could be fetched from textbox
var match = SomeLib.IsMatch(myString, pattern);

Risposta accettata

Beh, dopo un sacco di ricerche, non sono stato in grado di trovare esattamente quello che cercavo, ma ho bisogno di ottenere qualcosa lavorando abbastanza velocemente, e dato che il sistema che sto usando ha già le DLL pertinenti, ho Finito utilizzando Lucene.NET per creare un indice temporaneo contenente un singolo documento con i campi rilevanti che ho bisogno di cercare aggiunto ad esso. Posso quindi fare il tipo di query che sto cercando contro di esso, e verificare eventuali corrispondenze. Usando la classe RAMDirectory, sono riuscito a creare l'indice in memoria e a eliminarlo dopo la ricerca, quindi non è necessario scrivere sul disco file di indice.

Sono sicuro che probabilmente ci sono modi meno intensi per raggiungere questo obiettivo, ma come ho detto, è il massimo che ho potuto trovare nel tempo che ho avuto.

Grazie a tutti per i loro suggerimenti e vorrei ancora sapere se esiste un modo migliore per farlo?


Risposta popolare

Ho letto questo articolo un po 'di tempo fa. Sembra sulla falsariga di quello che stai chiedendo.

Espressioni regolari leggibili

Che, guardando la tua richiesta, dovresti quindi creare una mappatura della terminologia "user friendly" e l'interfaccia fluente di questa libreria.

È un ulteriore livello di astrazione, vero ma, personalmente , preferirei leggere un "stage intermedio" fluente rispetto alla regex generata automaticamente: s



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché