private void add(string expression, object replacement) { Pattern pattern = new Pattern(); pattern.expression = expression; pattern.replacement = replacement; // подсчитать количество подвыражений // - добавить 1, потому что каждая группа сама является подвыражением pattern.length = GROUPS.Matches(internalEscape(expression)).Count + 1; // шаблон имеет дело с sup-выражениями? if (replacement is string && SUB_REPLACE.IsMatch((string)replacement)) { string sreplacement = (string)replacement; // простой поиск (например, $ 2) if (INDEXED.IsMatch(sreplacement)) { pattern.replacement = int.Parse(sreplacement.Substring(1)) - 1; } } patterns.Add(pattern); }
private void add(string expression, object replacement) { Pattern pattern = new Pattern(); pattern.expression = expression; pattern.replacement = replacement; //count the number of sub-expressions // - add 1 because each group is itself a sub-expression pattern.length = GROUPS.Matches(internalEscape(expression)).Count + 1; //does the pattern deal with sup-expressions? if (replacement is string && SUB_REPLACE.IsMatch((string)replacement)) { string sreplacement = (string)replacement; // a simple lookup (e.g. $2) if (INDEXED.IsMatch(sreplacement)) { pattern.replacement = int.Parse(sreplacement.Substring(1)) - 1; } } patterns.Add(pattern); }