Как говорится в сообщении, вы передаете this
, который является Tree<T>* const
, к insertion
, который ожидает Node<T>*
.
Вы, вероятно, имели в виду root = insertion(root, value);
.
(Есть много других проблем с этим кодом, но это источник этого конкретного сообщения об ошибке.)
Используйте предварительный шаблон:-
"(? =A)"
Это находит любого, который сопровождается другим, не используя следующий A. Следовательно AAA будет соответствовать этому шаблону дважды.
Суммировать все предыдущие комментарии:
Dim rx As Regex = New Regex("(?=AA)")
Dim mc As MatchCollection = rx.Matches("BAAABBB")
Это приведет к результату, который Вы запрашиваете.
Править:
Вот версия C# (работающий с VB.NET сегодня, таким образом, я случайно продолжил VB.NET).
Regex rx = new Regex("(?=AA)");
MatchCollection mc = rx.Matches("BAAABBB");
Любое регулярное выражение может дать массив MatchCollection
Попробуйте это:
System.Text.RegularExpressions.MatchCollection matchCol;
System.Text.RegularExpressions.Regex regX = new System.Text.RegularExpressions.Regex("(?=AA)");
string index="",str="BAAABBB";
matchCol = regX.Matches(str);
foreach (System.Text.RegularExpressions.Match mat in matchCol)
{
index = index + mat.Index + ",";
}
Содержание индекса - то, что Вы ищете с последней удаленной запятой.
Regex. Соответствия () http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.matchcollection.aspx
Вы действительно ищете подстроки, которые являются только двумя символами долго? Если так, поиск 20 миллионов символьных строк будет медленным, какой regex Вы используете (или любая non-regex техника, в этом отношении). Если строка поиска длиннее, regex механизм может использовать алгоритм поиска как Boyer-Moore или Knuth-Morris-Pratt для ускорения поиска - дольше лучше на самом деле.
Между прочим, вид поиска, о котором Вы говорите, называют, перекрывая соответствия; я добавлю это к тегам.