我需要一个正则表达式,可用于在逗号分隔的列表中查找第N个条目。
例如,假设此列表如下所示:
abc,def,4322,mail@mailinator.com,3321,alpha-beta,43
...我想找到第 7个条目 ( alpha-beta
) 的值。
我的第一个想法不是使用正则表达式,而是使用将字符串拆分为逗号上的数组的东西,但是因为您要求使用正则表达式。
大多数正则表达式允许您指定最小或最大匹配,所以这样的事情可能会起作用。
/(?:[^\,]*\,){6}([^,]*)/
这旨在匹配任意数量的非逗号字符,后跟一个逗号,精确六次(?:[^,]*,){6}
-?:
表示不捕获 - 然后匹配并捕获任意数量的非逗号字符([^,]+)
。您想使用第一个捕获组。
如果您需要更多信息,请告诉我。
编辑:我编辑了上面的内容以不捕获字符串的第一部分。此正则表达式适用于 C# 和 Ruby。
你可以使用类似的东西:
([^,]*,){$m}([^,]*),
作为起点。(将 $m 替换为 (n-1) 的值。)内容将在捕获组 2 中。这不处理大小为 n 的列表之类的事情,但这只是根据您的情况进行适当修改的问题。
@list = split /,/ => $string;
$it = $list[6];
要不就
$it = (split /,/ => $string)[6];
{6}
每次都写一个带有 a 的模式。