Necesito analizar una cadena y agregar comillas simples alrededor de cada valor de Guid. Estaba pensando que podría usar un Regex para hacer esto, pero no soy exactamente un gurú de Regex.
¿Existe una buena expresión regular para usar para identificar un Guid?
Mi segunda pregunta es una vez que he encontrado una expresión regular válida que supongo que usaría, Regex.Replace(String, String, MatchEvaluator)
pero no estoy muy seguro de la sintaxis. Tal vez algo como:
return Regex.Replace(stringToFindMatch, GuidRegex, match =>
{
return string.Format("'{0}'", match.Groups[0].ToString());
});
Una cadena que estoy tratando de analizar puede verse así:
"SELECCIONE passwordco0_.PASSWORD_CONFIG_ID como PASSWORD1_46_0_, FROM PASSWORD_CONFIG passwordco0_ WHERE passwordco0_.PASSWORD_CONFIG_ID = baf04077-a3c0-454b-ac6f-9fec00b8eb3c; @ p040-877-a3c0-454b-ac6f-9fec00b8eb3c;
Respuestas:
Este es bastante simple y no requiere un delegado como dices.
Esto coincide con los siguientes estilos, que son todos formatos equivalentes y aceptables para un GUID.
Actualización 1
@NonStatic señala en los comentarios que la expresión regular anterior coincidirá con falsos positivos que tienen un delimitador de cierre incorrecto.
Esto se puede evitar mediante los condicionales de expresiones regulares que son ampliamente compatibles.
Los condicionales son compatibles con el motor JGsoft, Perl, PCRE, Python y .NET framework. Ruby los admite a partir de la versión 2.0. Los lenguajes como Delphi, PHP y R que tienen funciones de expresiones regulares basadas en PCRE también admiten condicionales. (fuente http://www.regular-expressions.info/conditional.html )
La expresión regular que sigue a Will coincidirá
Y no coincidirá
Regex:
Las soluciones se simplifican para hacer coincidir solo números para mostrar de una manera más clara lo que se requiere si es necesario.
fuente
[0-9a-fA-F\-]{32,36}
.https://support.office.com/en-us/article/poisson-function-d81f7294-9d7c-4f75-bc23-80aa8624173a
La expresión regular más básica es la siguiente:
o puedes pegarlo aquí .
Espero que esto te ahorre algo de tiempo.
fuente
[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}
Los guiones se podrían hacer opcional:[0-9A-Fa-f]{8}-?([0-9A-Fa-f]{4}-?){3}[0-9A-Fa-f]{12}
.Para que C # .Net encuentre y reemplace cualquier cadena que busque guid del texto dado,
Utilice esta expresión regular:
Ejemplo de código C #:
¡Seguro que funciona! Y coincide y reemplaza los siguientes estilos, que son todos formatos equivalentes y aceptables para un GUID.
fuente
En .NET Framework 4 hay una estructura mejorada System.Guid, que incluye nuevos métodos TryParse y TryParseExact para analizar GUID. Aquí hay un ejemplo de esto.
En este ejemplo, creamos un nuevo objeto guid y también tomamos una variable de cadena que tiene un guid no válido. Después de eso, usamos el método TryParse para validar que ambas variables tengan un formato guid válido o no. Al ejecutar el ejemplo, puede ver que la variable de cadena no tiene un formato de guid válido y da un mensaje de "guid no válido". Si la variable de cadena tiene un guid válido, esto devolverá verdadero en el método TryParse.
fuente
Puede autogenerar fácilmente el código C # usando: http://regexhero.net/tester/ .
Es gratis.
Así es como lo hice:
Luego, el sitio web genera automáticamente el código .NET:
fuente
Yo uso un patrón de expresiones regulares más fácil
fuente