c# - 有没有办法让一个角色成为两场比赛的一部分,而不仅仅是一场

标签 c# regex

我有这个正则表达式:1(0+)1

我正在测试这个值:1010010001

我希望我有三个匹配项:101100110001 但我得到的匹配项只有:101, 10001.

第二个 1 应该是两个匹配项的一部分:1011001

有没有办法让一个角色成为两场比赛的一部分?

https://regex101.com/r/oNfdFU/1

最佳答案

这是在 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/

相关文章:

PHP 正则表达式在转义字符后带有单词边界

c - 删除 C 中的部分字符串(正则表达式?)

c# - 将现有部署升级到最新版本的最佳方式

c# - 当 web.config 不可用时如何解决对 applicationSettings 的引用

c# - 这两个创建实例的底层调用有什么区别?

Python Regex - 获取匹配词

javascript - 同时使用多个正则表达式进行测试(用于句法分析)

c# - 按字母顺序排序的最有效方法是什么?

C# 按另一个列表排序列表

python - 正则表达式查找文本的所有句子?