我需要找到一个字符串中的所有组,其中连续的序列0被包含在1
之间100001abc101 // 2 groups `100001` and `101`
1001ab010abc01001 // 2 groups `1001' and `1001`
1001010001 // 3 groups `1001`, `101` and `10001` --> This is a special case
我的Regex同样是:1(0+)1
这适用于第1和第2个案例但在第3个案例中它只匹配1001
和{{1} } 10001
请建议我缺少的东西。
问题是匹配从最后一个匹配组的下一个字符开始,它应该从相同的匹配字符本身开始。
答案 0 :(得分:2)
答案 1 :(得分:2)
要匹配重叠匹配,您应该在前瞻中使用捕获组,如下所示:
(?=(10+1))
由于我们只是断言匹配而不是匹配它们,因此正则表达式引擎能够返回10+1
的所有可能组合,即使它们是重叠的。
答案 2 :(得分:1)
使用类似(?=(10+1))10+
的内容
其中组1包含序列,而
不匹配最后一个。
https://regex101.com/r/uH5OrS/1
一般情况下,您希望使用上一个10+
移动该位置
在这种情况下,没有必要,但我不会养成习惯
不包括它,它有一天会咬你。