Comment récupérer du texte sélectionné en utilisant Regex
en C#
Lors de la manipulation de chaînes en C#, vous pourriez rencontrer des situations où vous devez extraire des morceaux d’information spécifiques en fonction de modèles. Un problème classique est de traduire la fonctionnalité regex de langages comme Perl en C#. Ce billet de blog se concentre sur la manière de récupérer du texte sélectionné à l’aide de Regex
en C#, vous fournissant des solutions simples et claires.
Le problème expliqué
Supposons que vous ayez une chaîne contenant un modèle que vous souhaitez extraire. Par exemple, si vous avez une chaîne qui ressemble à “Index: 25”, et que vous souhaitez récupérer le nombre “25” en tant qu’entier, vous utiliseriez généralement regex pour trouver le modèle. En Perl, cela pourrait être fait en utilisant le code suivant :
$indexVal = 0;
if($string =~ /Index: (\d*)/){$indexVal = $1;}
Dans cet exemple, le modèle regex /Index: (\d*)/
recherche la sous-chaîne “Index: " suivie de chiffres, capturant les chiffres pour une utilisation ultérieure. Cependant, comment pouvons-nous réaliser la même fonctionnalité en C# ?
La solution en C#
Décortiquons maintenant la manière de mettre en œuvre la même fonctionnalité en C#. Voici les étapes pour écrire un code équivalent en C# qui extrait le nombre après “Index: “.
Étape 1 : Importer l’espace de noms nécessaire
Tout d’abord, assurez-vous d’importer l’espace de noms System.Text.RegularExpressions
, qui fournit la classe Regex
dont vous avez besoin pour les opérations regex.
using System.Text.RegularExpressions;
Étape 2 : Définir votre modèle Regex
Créez un objet Regex
avec le même modèle que vous avez utilisé en Perl :
Regex re = new Regex(@"Index: (\d*)");
Étape 3 : Faire correspondre le modèle avec votre chaîne
Ensuite, vous voudrez faire correspondre le regex avec votre chaîne d’entrée :
Match m = re.Match(s); // 's' est votre chaîne d'entrée
Étape 4 : Extraire la valeur correspondante
Maintenant, vous pouvez vérifier si une correspondance a été trouvée et extraire le groupe capturé, de manière similaire à ce que vous avez fait en Perl :
int indexVal = 0; // Valeur par défaut
if(m.Success)
{
// Le groupe capturé est à l'index 1
int.TryParse(m.Groups[1].Value, out indexVal); // paramètre out pour la sécurité
}
Exemple de code complet en C#
Voici à quoi pourrait ressembler le code complet dans un contexte C# :
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
string s = "Index: 25"; // Chaîne d'entrée exemple
int indexVal = 0;
Regex re = new Regex(@"Index: (\d*)");
Match m = re.Match(s);
if(m.Success)
{
int.TryParse(m.Groups[1].Value, out indexVal);
}
Console.WriteLine("Valeur d'index extraite : " + indexVal);
}
}
Conclusion
Récupérer du texte sélectionné en utilisant Regex
en C# est simple une fois que vous comprenez la conversion à partir d’autres langages de programmation comme Perl. En suivant les étapes décrites ci-dessus, vous pouvez efficacement extraire les informations nécessaires d’une chaîne en utilisant des motifs regex en toute confiance.
Points clés à retenir
- Comprendre les motifs regex est crucial pour une extraction de texte efficace en C#. Une fois que vous le maîtrisez, vous constaterez une fonctionnalité similaire dans divers langages de programmation.
N’hésitez pas à expérimenter avec différents modèles et à explorer les capacités de la classe Regex
en C#. Bon codage !