Supposons que je veux faire correspondre "abc"
dans la chaîne s
seulement si elle se produit exactement à l'index n
.Comment Regex.IsMatch à un décalage spécifié dans .NET?
int n = 2;
Console.WriteLine(new Regex("abc").IsMatch("01abc", n)); // true
Console.WriteLine(new Regex("abc").IsMatch("0123abc", n)); // true (but want false)
Console.WriteLine(new Regex("^abc").IsMatch("01abc", n)); // false (but want true)
semble que la seule façon d'y parvenir sans utiliser Substring sur l'entrée est quelque chose comme ceci:
var match = new Regex("abc").Match("0123abc", n);
Console.WriteLine(match.Success && match.Index == n);
Ce n'est pas trop mal, sauf que quand il n'y a pas de match à le décalage de départ, puis entier entrée sera analysée inutilement, ce qui est probablement plus lent pour la plupart des expressions régulières que la création en fait une sous-chaîne avant la correspondance. (Je n'ai pas le temps cependant). Est-ce qu'il me manque une surcharge ou un réglage évident qui limiterait une correspondance au décalage fourni uniquement?
: O Je voulais faire exactement cela aussi, mais je ne pensais pas que c'était possible. Merci de demander ceci :) – mpen