Recherche…


Syntaxe

  • new Regex(pattern); // Crée une nouvelle instance avec un modèle défini.
  • Regex.Match(input); // Démarre la recherche et renvoie la correspondance.
  • Regex.Matches(input); // Démarre la recherche et retourne une MatchCollection

Paramètres

prénom Détails
Modèle Le modèle de string à utiliser pour la recherche. Pour plus d'informations: msdn
RegexOptions [Facultatif] Les options communes ici sont Singleline et Multiline . Ils modifient le comportement des éléments de modèle comme le point (.) NewLine ne couvre pas une NewLine (\ n) en Multiline-Mode mais en SingleLine-Mode . Comportement par défaut: msdn
Timeout [Facultatif] Lorsque les modèles deviennent plus complexes, la recherche peut prendre plus de temps. C'est le délai d'attente passé pour la recherche, comme cela a été le cas pour la programmation réseau.

Remarques

Nécessaire en utilisant

using System.Text.RegularExpressions;

Agréable d'avoir

  • Vous pouvez tester vos modèles en ligne sans avoir besoin de compiler votre solution pour obtenir des résultats ici: Cliquez sur moi
  • Regex101 Exemple: Cliquez sur moi

En particulier, les débutants ont tendance à exagérer leurs tâches avec regex car ils se sentent puissants et au bon endroit pour des recherches plus complexes basées sur du texte. C'est à ce stade que les gens essaient d'analyser des documents XML avec regex sans même se demander s'ils pourraient avoir une classe déjà terminée pour cette tâche, comme XmlDocument .

Regex devrait être la dernière arme à prendre en compte la complexité. Au moins, n'oubliez pas de faire quelques efforts pour trouver le right way avant d'écrire 20 lignes de motifs.

Match unique

using System.Text.RegularExpressions;

string pattern = ":(.*?):";
string lookup = "--:text in here:--";

// Instanciate your regex object and pass a pattern to it
Regex rgxLookup = new Regex(pattern, RegexOptions.Singleline, TimeSpan.FromSeconds(1));
// Get the match from your regex-object
Match mLookup = rgxLookup.Match(lookup);

// The group-index 0 always covers the full pattern.
// Matches inside parentheses will be accessed through the index 1 and above.
string found = mLookup.Groups[1].Value;

Résultat:

found = "text in here"

Plusieurs correspondances

using System.Text.RegularExpressions;

List<string> found = new List<string>();
string pattern = ":(.*?):";
string lookup = "--:text in here:--:another one:-:third one:---!123:fourth:";

// Instanciate your regex object and pass a pattern to it
Regex rgxLookup = new Regex(pattern, RegexOptions.Singleline, TimeSpan.FromSeconds(1));
MatchCollection mLookup = rgxLookup.Matches(lookup);

foreach(Match match in mLookup)
{
    found.Add(match.Groups[1].Value);
}

Résultat:

found = new List<string>() { "text in here", "another one", "third one", "fourth" }


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow