C# Language
Analyse de regex
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