gpt4 book ai didi

c# - 获取所有迭代的捕获组

转载 作者:太空狗 更新时间:2023-10-30 00:30:42 29 4
gpt4 key购买 nike

我正在研究 C# Regex。

输入文字:

headera
aa1aaa
aa2aaa
aa3aaa

headerb
aa4aaa
aa5aaa
aa6aaa

headerc
aa7aaa
aa8aaa
aa9aaa

我只想捕获 headerbheaderc 之间的数字 4、5 和 6

我的尝试:

我能够使用下面的模式捕获 headera 和 headerb 下的那些。我不能在 lookbehind 上应用相同的概念,因为它应该是零宽度的,因此不允许使用量词。

aa(\d+)aaa(?=[\s|\S]*headerc)

重复捕获组只会捕获最后一次迭代。我无法为多个实例应用一些通配符正则表达式。

请协助。谢谢

[已解决]利用 .Net 能够支持可变宽度向后看的优势。您可以使用以下模式:

@"(?<=headerb[\s|\S]*)aa(\d)aaa(?=[\s\S]*headerc)"
@"(?s)(?<=\bheaderb\b.*?)\d+(?=.*?\bheaderc\b)"
@"(?<=\bheaderb\b(?:(?!\bheaderc\b)[\s\S])*)aa(\d+)aaa"

最佳答案

C#支持变量lookbehind。所以用它。

(?<=\bheaderb\b(?:(?!\bheaderc\b)[\s\S])*)aa(\d+)aaa

See Demo.

关于c# - 获取所有迭代的捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34038296/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com