Vorrei testare se un'espressione regolare corrisponde a una parte di una stringa in un indice specifico (e solo a partire da quell'indice specifico). Ad esempio, data la stringa "uno due 3 4 cinque", mi piacerebbe sapere che, con l'indice 8, l'espressione regolare [0-9] + corrisponderà a "3". RegularExpression.IsMatch e Match hanno entrambi un indice iniziale, ma entrambi cercheranno l'intero resto della stringa per una corrispondenza, se necessario.corrispondenza di espressione regolare C# a indice specifico nella stringa?
string text="one two 3 4 five";
Regex num=new Regex("[0-9]+");
//unfortunately num.IsMatch(text,0) also finds a match and returns true
Console.WriteLine("{0} {1}",num.IsMatch(text, 8),num.IsMatch(text,0));
Ovviamente, ho potuto verificare se la partita risultante inizia l'indice Sono interessato a, ma io cercherò di fare di questo un gran numero di volte su stringhe di grandi dimensioni, in modo da non voglio perdere tempo a cercare per le partite successive nella stringa. Inoltre, non saprò in anticipo quali sono le espressioni regolari che effettivamente testerò contro la stringa.
io non voglio:
- dividere la stringa su alcuni confine come spazi bianchi perché nella mia situazione non voglio sapere in anticipo che cosa un confine adatto sarebbe
- devono modificare la stringa di input in qualsiasi modo (come ottenere la stringa all'indice 8 e quindi utilizzando^nella regex)
- cercare il resto della stringa per una stuoia ch o fare qualcosa altro che non sarebbe performante per un gran numero di prove contro una stringa grande .
Vorrei analizzare un corpo di testo potenzialmente grande fornito dall'utente utilizzando una grammatica fornita dall'utente arbitrario. La grammatica sarà definita in una sintassi simile a BNF o PEG e i terminali saranno sia letterali stringa che espressioni regolari. Quindi dovrò verificare se la parte successiva della stringa corrisponde a uno qualsiasi dei potenziali terminali come guidato dalla grammatica.
Puoi spiegare cosa stai cercando di fare in senso lato? Le tue restrizioni su ciò che non vuoi fare sono confuse. –
Ho aggiunto una breve descrizione di ciò che sto facendo. Inoltre, i requisiti si riducono a: Non voglio fare nulla di lento e non ho una conoscenza approfondita di ciò che sto cercando di analizzare in anticipo. – Rngbus