Не могу найти индекс, где регулярное выражение получает совпадение - PullRequest
0 голосов
/ 03 мая 2020

Я использую vb. net, и что-то, что кажется очевидным в PHP, не работает (для меня) в vb. net:

Extract = "100011100000"
Dim HandReg3 As New Regex("(?:[0]*)(1{3,})(?:[0]*)")

If HandReg3.IsMatch(Extract) Then
     Dim m() As String = HandReg3.Split(Extract)
     For Each item As String In m
         Console.WriteLine(item)
     Next
     Dim m1 As Match = Regex.Match(Extract, "(?:[0]*)(1{3,})(?:[0]*)")
     Console.WriteLine(m1.Index)
     Console.WriteLine(m1.Length)
End If

Который пишет:

1
111
1  <-Index. Shouldn't it be 4 (0 based) or 5????
111

Я пробовал несколько комбинаций групп (захват и не захват). Конечно, это должно быть что-то очевидное и глупое, но спустя почти 8 часов. Я просто не могу понять это правильно! Попробовал:

([0-1]*)(1{3,})([0-1]*)
[0-1]*1{3,}[0-1]*

и любую другую комбинацию, о которой я могу подумать.

Спасибо за вашу помощь

Эмилиано

...