solo regulares probar letras ismatch expresiones example especiales ejemplos caracteres alfanumerico .net regex

.net - regulares - regex c# example



Cómo Regex buscar/reemplazar solo la primera aparición en una cadena en.NET? (4)

Parece que el método .NET Regex.Replace reemplaza automáticamente todas las coincidencias. Podría proporcionar un delegado de MatchEvaluator que devuelva la cadena coincidente después del primer reemplazo, sin mostrar ningún cambio, pero eso me parece muy ineficiente.

¿Cuál es la forma más eficiente de parar después del primer reemplazo?


Desde MSDN :

Replace(String, String, Int32)

Dentro de una cadena de entrada especificada, reemplaza un número máximo especificado de cadenas que coinciden con un patrón de expresión regular con una cadena de reemplazo especificada.

¿No es esto lo que quieres?


En ese caso, no puedes usar:

string str ="abc546_$defg"; str = Regex.Replace(str,"[^A-Za-z0-9]", "");

En su lugar, debe declarar una nueva instancia de Regex y usarla así:

string str ="abc546_$defg"; Regex regx = new Regex("[^A-Za-z0-9]"); str = regx.Replace(str,"",1)

Observe el 1 , representa la cantidad de veces que debe ocurrir el reemplazo.


Probablemente estabas usando el método estático. No hay sobrecarga (String, String, Int32) para eso. Construya un objeto regex primero y use myRegex.Replace.


Solo para responder la pregunta original ... La siguiente expresión regular solo coincide con la primera instancia de la palabra foo:

(?<!foo.*)foo

Esta expresión regular usa el aspecto negativo detrás (? <!) Para asegurar que no se encuentre ninguna instancia de foo antes de la coincidencia.