Шаблон регулярного выражения находит x вхождения символа в группе из y символов - PullRequest
1 голос
/ 06 марта 2019

Можно ли использовать регулярное выражение, чтобы найти любую группу из 500 символов, содержащую как минимум 300 1, которые могут или не могут быть разделены 0 '

Я пытался использовать [1]{500} но, похоже, работает только тогда, когда 1 находятся непосредственно рядом друг с другом.

пример ввода

1 Ответ

2 голосов
/ 06 марта 2019

С помощью

(?=.{500}(?=(.*$)))(?:0*1){300}.*(?=\1$)

вы можете: просмотреть первые 500 символов, а затем перехватить оставшуюся часть строки в первой группе.Затем, используя (?:0*1){300}, вы сопоставляете следующие 300 1 с в строке и смотрите на первую группу, чтобы убедиться, что 300 совпадающих 1 с идут в пределах этих первых 500 символов.500 символов, которые вы хотите получить в результате, будут полностью совпадать.

Но это очень неэффективно - требуется путь слишком много шагов.

https://regex101.com/r/j8dCzT/1 (вам может потребоваться увеличить время ожидания, чтобы увидеть совпадения)

Я не уверен, есть ли лучший способ с регулярным выражением, но если его нет, было бы лучшеитерируйте строку вручную, считая количество символов на ходу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...