我有正则表达式 1(0*)1
和测试字符串 1000010001
我想要 2 个匹配项,但我发现只找到了 1 个:
var regex = new Regex("1(0*)1");
var values = regex.Matches(intBinaryString);
// values only has 1 match
regexonline 似乎同意:https://regex101.com/r/3J9Qxj/1
我做错了什么?
最佳答案
您已经在第一个匹配项中选择了第二个零前面的 1。
100001 0001
^^^^^^
这是第一场比赛。其余的只是 0001
,它与您的正则表达式不匹配。
如果您使用前瞻/后视,您可以规避此行为:
(?<=1)(0*)(?=1)
因为你不能在 JavaScript 中使用 lookbehinds,所以只使用一个 lookahead 就足够了,以防止重叠:
1(0*)(?=1)
还有一个给你的提示 regex101
示例:您没有添加全局标志,这会阻止多个选择。
关于c# - 在 C# 中获取重叠的正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41989025/