regex - 从第二行获取第二次出现
问题描述
我有来自dotnet test
命令结果的下表,我想要实现的是第二次出现(在Branch下面的那些)以Average开头的行。
+---------+-----------+-----------+-----------+
| | Line | Branch | Method |
+---------+-----------+-----------+-----------+
| Total | 100% | 100% | 100% |
+---------+-----------+-----------+-----------+
| Average | 100% | 100% | 100% |
+---------+-----------+-----------+-----------+
+---------+-----------+-----------+-----------+
| | Line | Branch | Method |
+---------+-----------+-----------+-----------+
| Total | 100% | 100% | 100% |
+---------+-----------+-----------+-----------+
| Average | 100% | 100% | 100% |
+---------+-----------+-----------+-----------+
我已经设法编写了以下正则表达式^\| Average *\| (\d+.\d+\%).*$
,但{2}
在表达式中的任何位置添加仍然不会返回我第二次出现。此外,我尝试使用https://regex101.com/,但它显示的匹配信息如下:
根据我的理解,我需要获得第二组,但我认为我需要提示或一点帮助才能达到我的目标。
有什么帮助吗?提前致谢!
解决方案
那这个呢:
string table =
"+---------+-----------+-----------+-----------+" + Environment.NewLine +
"| | Line | Branch | Method |" + Environment.NewLine +
"+---------+-----------+-----------+-----------+" + Environment.NewLine +
"| Total | 100% | 100% | 100% |" + Environment.NewLine +
"+---------+-----------+-----------+-----------+" + Environment.NewLine +
"| Average | 100% | 89% | 100% |" + Environment.NewLine +
"+---------+-----------+-----------+-----------+" + Environment.NewLine +
"" + Environment.NewLine +
"+---------+-----------+-----------+-----------+" + Environment.NewLine +
"| | Line | Branch | Method |" + Environment.NewLine +
"+---------+-----------+-----------+-----------+" + Environment.NewLine +
"| Total | 100% | 100% | 100% |" + Environment.NewLine +
"+---------+-----------+-----------+-----------+" + Environment.NewLine +
"| Average | 100% | 99% | 100% |" + Environment.NewLine +
"+---------+-----------+-----------+-----------+";
MatchCollection matches = Regex.Matches(table, @"(?<=\| Average *\| \d+\% +\| *)\d+\%(?=.*)");
foreach (Match m in matches)
{
Console.WriteLine(m.Value);
}
输出:
89%
99%
更新:
我必须发现 .NET(我构建 RegEx 的地方)支持环视表达式中的量词,而其他 RegEx 实现缺乏这种支持。
因此,我的解决方案的 RegEx 表达式不会在那里运行。
为了解决这个问题,我删除了量词并用固定的字符声明替换它们。这适用于固定表格,但如果表格的布局在其宽度上是动态的,则将不起作用:
(?<=\| Average \| ..\d\% \| )\d+\%(?=.*)
推荐阅读
- c# - 为什么 Rider 建议我使用解构?
- python - 不支持的操作数类型
- python - 找到正确的 python4delphi Tpythonengine 参数
- python - 安装的 pyocclient 得到 AttributeError: module 'owncloud' has no attribute 'Client'
- pandas - 将数据帧转换为张量
- video - safari浏览器不支持video标签怎么办?
- c# - 使用 ContentService 更新嵌套内容中的嵌套内容
- rust - 幻影数据用例
- mysql - MYSQL_替换?
- bluetooth - 蓝牙套接字连接 - 在每个请求上保持或重新连接?