Regex-匹配n个在任何m字形窗口内出现的子字符串

问题描述 投票:0回答:1

我在形成正则表达式时遇到了一些问题,该正则表达式在输入字符串的m个字符内至少匹配给定模式的n倍。例如,假设我的输入字符串是:

00000001100000001110111100000000000000000000000000000000000000000000000000110000000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100

我想检测在所有情况下1在输入字符串中至少出现7次(不一定连续),但在最多20个字符的窗口内。

到目前为止,我已经构建了这个表达式:

(1[^1]*?){7,}

它将检测在输入字符串中1出现至少7次的所有情况,但是现在这两个条件都匹配:

11000000011101111

1100000001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011

部分,但我只希望保留第一个,因为它位于由少于20个字符组成的子字符串中。

它试图将上述正则表达式与:

(?=(^[01]{0,20}))

也只匹配包含长度不超过20个字符的'1'或'0'的字符串部分,但是当我这样做时,它将停止工作。

有人有想法可以做到这一点吗?我已将此示例放在regex101中作为快速参考。

非常感谢!

regex pattern-matching substring string-matching
1个回答
0
投票

如果不列出所有可能的字符串,则不能用正则表达式来完成。您将需要遍历字符串。

© www.soinside.com 2019 - 2024. All rights reserved.