我有一个带有数字的简单 CSV:
123,4,563,2334,32,7
我没有找到一种方法来仅匹配使用索引号逐个字段匹配数字的第 n 个位置。这可以用正则表达式解决吗?
Regex 风格是最终用于 Microsoft Regex.Match 方法的风格,但它仅作为 .NET API 上的参数传递。我无法直接编程。
想要的输出是:
123
4
563
2324
32
7
@C3roe 的答案确实是一个很好的起点,但它匹配所有字段,直到所需结果的正确结尾。开头仍然处于第一位置。
^(?:[0-9]+,){2}([0-9]+)的结果是 123,4,563
期望的结果是 563
因此正则表达式适用于第一个索引 0。
^(?:[0-9]+,){0}([0-9]+) 的结果是 123
期望的结果是 123
所以@Friedrich 注意到 x,y 问题也是正确的。希望我能更好地解释这项任务。
您可以像这样使用积极的回顾:
(?<=^(?:\d+,){2})\d+
请参阅 .NET 正则表达式演示。
自定义
{2}
以获得您想要的号码。
详情:
(?<=^(?:\d+,){2})
- 与紧接其前面的位置匹配的正向后查找
^
- 字符串的开头(?:\d+,){2}
- 连续两次出现一个或多个数字,后跟逗号\d+
- 一位或多位数字。