Предположим, что я хочу сопоставить "abc"
в строке s
, только если это происходит именно с индексом n
.
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)
Кажется, что единственный способ достичь этого без использования подстроки на входе - это что-то вроде этого:
var match = new Regex("abc").Match("0123abc", n);
Console.WriteLine(match.Success && match.Index == n);
Это не так уж и плохо, за исключением того, что когда нет совпадения при начальном смещении, тогда вход весь будет сканироваться без необходимости, что, вероятно, медленнее для большинства регулярных выражений, чем фактическое создание подстроки до матч. (Я не рассчитал это все же).
Я пропустил явную перегрузку или настройку, которая ограничивала бы соответствие только предоставленным смещением?