Matches est toujours vide

Pourquoi ?

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Je fais actuellement une extension pour Visual Studio en C#. Je voudrais colorer les commentaires multilignes (/* */). J'ai donc fait une méthode ColorBetweenTwo :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private SnapshotPoint startPoint = new SnapshotPoint();
/// <summary>
/// Colore du texte entre deux chaines définies
/// </summary>
/// <param name="start">La chaine de départ</param>
/// <param name="end">La chaine de fin</param>
/// <param name="Text">La ligne actuellement parcourue par Visual Studio</param>
/// <param name="classification">Le type de coloration pour cette chaîne</param>
/// <param name="classifications">La liste des classifications à retourner à Visual Studio pour qu'il colore le texte.</param>
private void ColorBetweenTwo (string start, string end, SnapshotSpan Text, IClassificationType classification, ref List<ClassificationSpan> classifications)
{
    Regex startRgx = new Regex(start); 
    Regex endRgx = new Regex(end);

    var startMatches = startRgx.Matches(Text.GetText());
    var endMatches = endRgx.Matches(Text.GetText());

    foreach (Match strmatch in startMatches)
    {
        startPoint = Text.Start + strmatch.Index;
    }

    foreach (Match endMatch in endMatches)
    {
        if(startPoint != new SnapshotPoint())
        {
            classifications.Add(new ClassificationSpan(new SnapshotSpan(startPoint, Text.Start + endMatch.Index + 2), classification));
            startPoint = new SnapshotPoint();
        }
    }
}

Et je l'appelle comme ceci :

1
2
ColorBetweenTwo(@"/\/\*/", @"/\*\//", span, _commentType, ref classifications);
// span est défini par Visual Studio, _commmentType colore en vert, et classifications est la liste de classifications qui sera retournée au final.

Et mon problème est que bien que mon code de test contienne un commentaire multiligne, la Regex ne trouve rien.

Auteur du sujet

J'ai essayé en mettant RegexOptions.SingleLine, sans succès. Mais je penses que c'est parce que Visual Studio me fournit le texte ligne par ligne (c'est-à-dire que span représente uniquement une ligne de mon fichier.

Edit : en fait je suis pas sûr d'avoir tout compris au lien que tu m'a donné parce que moi et l'anglais ça fait 2. Mais en gros on y disait de mettre RegexOptions.SingleLine pour que le texte soit traité comme sur une seule ligne, non ?

Édité par Bat'

Auteur du sujet

Suite à de nombreuses bidouilles, j'ai réussi à voir d'où venias le problème. je penses donc qu'en C# les délimiteurs de regex (/ /), n'existent pas. Ils servent à séparer la Regex de ses options, mais on peux les définir via RegexOptions. Du coup je les ait virés et j'ai mis ce pattern : \/\* qui marche sans problème. Merci de m'avoir aidé ^^ !

Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte