Preciso analisar uma string e adicionar aspas simples em torno de cada valor de Guid. Eu estava pensando que poderia usar um Regex para fazer isso, mas não sou exatamente um guru do Regex.
Existe um bom Regex para usar para identificar um Guid?
Minha segunda pergunta é: depois de encontrar uma regex válida, presumo que usaria, Regex.Replace(String, String, MatchEvaluator)
mas não tenho certeza da sintaxe. Talvez algo como:
return Regex.Replace(stringToFindMatch, GuidRegex, match =>
{
return string.Format("'{0}'", match.Groups[0].ToString());
});
Uma string que estou tentando analisar pode ter a seguinte aparência:
"SELECT passwordco0_.PASSWORD_CONFIG_ID como PASSWORD1_46_0_, de PASSWORD_CONFIG passwordco0_ ONDE passwordco0_.PASSWORD_CONFIG_ID = baf04077-a3c0-454b-ac6f-9fec00b8e170; @ p0 = baf04077-a3c0-454b-ac6f-9fec00b8e170 [Tipo: Guid (0)]"
Respostas:
Este é bastante simples e não requer um delegado, como você diz.
Isso corresponde aos seguintes estilos, que são todos formatos equivalentes e aceitáveis para um GUID.
Atualização 1
@NonStatic deixa claro nos comentários que a regex acima corresponderá a falsos positivos que possuem um delimitador de fechamento incorreto.
Isso pode ser evitado por condicionais regex que são amplamente suportados.
As condicionais são suportadas pelo mecanismo JGsoft, Perl, PCRE, Python e a estrutura .NET. Ruby oferece suporte a eles a partir da versão 2.0. Linguagens como Delphi, PHP e R que possuem recursos regex baseados em PCRE também suportam condicionais. (fonte http://www.regular-expressions.info/conditional.html )
A regex que segue corresponderá
E não vai combinar
Regex:
As soluções são simplificadas para combinar apenas números para mostrar de forma mais clara o que é necessário, se necessário.
fonte
[0-9a-fA-F\-]{32,36}
.https://support.office.com/en-us/article/poisson-function-d81f7294-9d7c-4f75-bc23-80aa8624173a
O regex mais básico é o seguinte:
ou você pode colá-lo aqui .
Espero que isso economize algum tempo.
fonte
[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}
Os traços podem ser feitas opcional:[0-9A-Fa-f]{8}-?([0-9A-Fa-f]{4}-?){3}[0-9A-Fa-f]{12}
.Para C # .Net encontrar e substituir qualquer string de aparência de guid do texto fornecido,
Use este RegEx:
Exemplo de código C #:
Certamente funciona! E ele corresponde e substitui os seguintes estilos, que são todos formatos equivalentes e aceitáveis para um GUID.
fonte
No .NET Framework 4, há um aprimoramento da estrutura System.Guid, que inclui os novos métodos TryParse e TryParseExact para analisar o GUID. Aqui está um exemplo para isso.
Neste exemplo, criamos um novo objeto guid e também pegamos uma variável de string que tem guid inválido. Depois disso, usamos o método TryParse para validar se ambas as variáveis têm formato guid válido ou não. Ao executar o exemplo, você pode ver que a variável string não tem um formato guid válido e dá a mensagem de "guid inválido". Se a variável de string tiver um guid válido, isso retornará verdadeiro no método TryParse.
fonte
Você pode gerar automaticamente o código C # usando: http://regexhero.net/tester/ .
É grátis.
Aqui está como eu fiz:
O site, então, gera automaticamente o código .NET:
fonte
Eu uso um padrão regex mais fácil
fonte