小编Dra*_*hin的帖子

获取所有迭代的捕获组

我正在研究 C# 正则表达式。

输入文本:

headera
aa1aaa
aa2aaa
aa3aaa

headerb
aa4aaa
aa5aaa
aa6aaa

headerc
aa7aaa
aa8aaa
aa9aaa
Run Code Online (Sandbox Code Playgroud)

我只想捕获headerbheaderc之间的数字 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)

c# regex

5
推荐指数
1
解决办法
129
查看次数

标签 统计

c# ×1

regex ×1