我正在研究 C# 正则表达式。
输入文本:
headera
aa1aaa
aa2aaa
aa3aaa
headerb
aa4aaa
aa5aaa
aa6aaa
headerc
aa7aaa
aa8aaa
aa9aaa
Run Code Online (Sandbox Code Playgroud)
我只想捕获headerb和headerc之间的数字 4、5 和 6
我的尝试:
我能够使用下面的模式捕获 headera 和 headerb 下的内容。我不能在后视上应用相同的概念,因为这应该是零宽度,因此不允许使用量词。
aa(\d+)aaa(?=[\s|\S]*headerc)
Run Code Online (Sandbox Code Playgroud)
重复捕获组将仅捕获最后一次迭代。我无法为多个实例应用一些通配符正则表达式。
请协助。谢谢
[已解决] 利用 .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"
Run Code Online (Sandbox Code Playgroud)