Me gustaría probar si una expresión regular coincidirá con parte de una cadena en un índice específico (y solo a partir de ese índice específico). Por ejemplo, dada la cadena "one two 3 4 five", me gustaría saber que, en el índice 8, la expresión regular [0-9] + coincidirá con "3". RegularExpression.IsMatch y Match ambos toman un índice inicial, sin embargo ambos buscarán el resto de la cadena para una coincidencia si es necesario.C# coincidencia de expresión regular en el índice específico en la cadena?
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));
Obviamente, yo pueda comprobar si el partido resultante comienza en el índice Me interesa, pero me va a hacer de este un gran número de veces en las grandes cadenas, por lo que no quieren perder el tiempo buscando para los partidos más adelante en la cadena. Además, no sabré de antemano qué expresiones regulares voy a probar contra la cadena.
no quiero a:
- dividir la cadena de alguna frontera como espacios en blanco porque en mi situación no voy a saber de antemano lo que un límite adecuado sería
- tienen que modificar la cadena de entrada en ninguna manera (como conseguir la subcadena en el índice 8 y luego usando^en el expresiones regulares)
- buscar en el resto de la cadena de una estera haga o haga cualquier cosa que no sea eficaz para una gran cantidad de pruebas contra una cadena grande .
Me gustaría analizar un cuerpo de texto potencialmente grande proporcionado por el usuario mediante una gramática arbitraria suministrada por el usuario. La gramática se definirá en una sintaxis similar a BNF o PEG, y los terminales serán cadenas literales o expresiones regulares. Por lo tanto, tendré que comprobar si la siguiente parte de la cadena coincide con cualquiera de los terminales potenciales según lo determine la gramática.
¿Puede explicar lo que está tratando de hacer en un sentido más amplio? Sus restricciones sobre lo que no quiere hacer son confusas. –
Agregué una breve descripción de lo que estoy haciendo. Además, los requisitos realmente se reducen a: no quiero hacer nada lento y no tengo un conocimiento profundo de lo que estoy tratando de analizar desde el principio. – Rngbus