gpt4 book ai didi

c# - 正则表达式:重复捕获组

转载 作者:可可西里 更新时间:2023-11-01 08:19:28 24 4
gpt4 key购买 nike

我必须从 ASCII 文本文件中解析一些表格。这是部分示例:

QSMDRYCELL   11.00   11.10   11.00   11.00    -.90      11     11000     1.212
RECKITTBEN 192.50 209.00 192.50 201.80 5.21 34 2850 5.707
RUPALIINS 150.00 159.00 150.00 156.25 6.29 4 80 .125
SALAMCRST 164.00 164.75 163.00 163.25 -.45 80 8250 13.505
SINGERBD 779.75 779.75 770.00 773.00 -.89 8 95 .735
SONARBAINS 68.00 69.00 67.50 68.00 .74 11 3050 2.077

该表由 1 列文本和 8 列 float 组成。我想通过正则表达式捕获每一列。

我对正则表达式还很陌生。这是我想出的错误正则表达式模式:

(\S+)\s+(\s+[\d\.\-]+){8}

但该模式仅捕获第一列和最后一列。 RegexBuddy 还会发出以下警告:

You repeated the capturing group itself. The group will capture only the last iteration. Put a capturing group around the repeated group to capture all iterations.

我查阅了他们的帮助文件,但我不知道如何解决这个问题。

如何分别捕获每一列?

最佳答案

在 C# 中(修改自 this example ):

string input = "QSMDRYCELL   11.00   11.10   11.00   11.00    -.90      11     11000     1.212";
string pattern = @"^(\S+)\s+(\s+[\d.-]+){8}$";
Match match = Regex.Match(input, pattern, RegexOptions.MultiLine);
if (match.Success) {
Console.WriteLine("Matched text: {0}", match.Value);
for (int ctr = 1; ctr < match.Groups.Count; ctr++) {
Console.WriteLine(" Group {0}: {1}", ctr, match.Groups[ctr].Value);
int captureCtr = 0;
foreach (Capture capture in match.Groups[ctr].Captures) {
Console.WriteLine(" Capture {0}: {1}",
captureCtr, capture.Value);
captureCtr++;
}
}
}

输出:

Matched text: QSMDRYCELL   11.00   11.10   11.00   11.00    -.90      11     11000     1.212
...
Group 2: 1.212
Capture 0: 11.00
Capture 1: 11.10
Capture 2: 11.00
...etc.

关于c# - 正则表达式:重复捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3172643/

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