我有这个正则表达式:1(0+)1
我正在测试这个值:1010010001
,
我希望我有三个匹配项:101
、1001
、10001
但我得到的匹配项只有:101
, 10001
.
第二个 1
应该是两个匹配项的一部分:101
和 1001
。
有没有办法让一个角色成为两场比赛的一部分?
最佳答案
这是在 C# 中执行此操作的一种方法。我们可以找到正则表达式模式 10+(?=1)
上的所有匹配项。这在模式的末尾使用前瞻来断言尾随 1
,但请注意尾随 1
实际上并没有在每个 consumed匹配。它在下一场比赛开始时被消耗掉。然后,要构建实际的输出匹配,我们需要在每个匹配的末尾附加一个 1
。
string input = "1010010001";
Regex regex = new Regex(@"10+(?=1)");
MatchCollection matches = regex.Matches(input);
foreach(Match match in matches)
{
Console.WriteLine("Found a match: {0}1", match.Value);
}
这打印:
Found a match: 101
Found a match: 1001
Found a match: 10001
关于c# - 有没有办法让一个角色成为两场比赛的一部分,而不仅仅是一场,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69619008/