使用索引匹配单个字段的 CSV 的正则表达式

问题描述 投票:0回答:1

我有一个带有数字的简单 CSV:

123,4,563,2334,32,7

我没有找到一种方法来仅匹配使用索引号逐个字段匹配数字的第 n 个位置。这可以用正则表达式解决吗?

Regex 风格是最终用于 Microsoft Regex.Match 方法的风格,但它仅作为 .NET API 上的参数传递。我无法直接编程。

想要的输出是:

  1. 123

  2. 4

  3. 563

  4. 2324

  5. 32

  6. 7

@C3roe 的答案确实是一个很好的起点,但它匹配所有字段,直到所需结果的正确结尾。开头仍然处于第一位置。

^(?:[0-9]+,){2}([0-9]+)的结果是 123,4,563
期望的结果是 563

因此正则表达式适用于第一个索引 0。

^(?:[0-9]+,){0}([0-9]+) 的结果是 123
期望的结果是 123

所以@Friedrich 注意到 x,y 问题也是正确的。希望我能更好地解释这项任务。

regex csv
1个回答
0
投票

您可以像这样使用积极的回顾:

(?<=^(?:\d+,){2})\d+

请参阅 .NET 正则表达式演示

自定义

{2}
以获得您想要的号码。

详情

  • (?<=^(?:\d+,){2})
    - 与紧接其前面的位置匹配的正向后查找
    • ^
      - 字符串的开头
    • (?:\d+,){2}
      - 连续两次出现一个或多个数字,后跟逗号
  • \d+
    - 一位或多位数字。
© www.soinside.com 2019 - 2024. All rights reserved.