С помощью
(?=.{500}(?=(.*$)))(?:0*1){300}.*(?=\1$)
вы можете: просмотреть первые 500 символов, а затем перехватить оставшуюся часть строки в первой группе.Затем, используя (?:0*1){300}
, вы сопоставляете следующие 300 1
с в строке и смотрите на первую группу, чтобы убедиться, что 300 совпадающих 1
с идут в пределах этих первых 500 символов.500 символов, которые вы хотите получить в результате, будут полностью совпадать.
Но это очень неэффективно - требуется путь слишком много шагов.
https://regex101.com/r/j8dCzT/1 (вам может потребоваться увеличить время ожидания, чтобы увидеть совпадения)
Я не уверен, есть ли лучший способ с регулярным выражением, но если его нет, было бы лучшеитерируйте строку вручную, считая количество символов на ходу.