8

我需要一个正则表达式,可用于在逗号分隔的列表中查找第N条目。

例如,假设此列表如下所示:

abc,def,4322,mail@mailinator.com,3321,alpha-beta,43

...我想找到第 7条目 ( alpha-beta) 的值。

4

3 回答 3

11

我的第一个想法不是使用正则表达式,而是使用将字符串拆分为逗号上的数组的东西,但是因为您要求使用正则表达式。

大多数正则表达式允许您指定最小或最大匹配,所以这样的事情可能会起作用。

/(?:[^\,]*\,){6}([^,]*)/

这旨在匹配任意数量的非逗号字符,后跟一个逗号,精确六次(?:[^,]*,){6}-?:表示不捕获 - 然后匹配并捕获任意数量的非逗号字符([^,]+)。您想使用第一个捕获组。

如果您需要更多信息,请告诉我。

编辑:我编辑了上面的内容以不捕获字符串的第一部分。此正则表达式适用于 C# 和 Ruby。

于 2012-03-15T16:06:54.770 回答
0

你可以使用类似的东西:

([^,]*,){$m}([^,]*),

作为起点。(将 $m 替换为 (n-1) 的值。)内容将在捕获组 2 中。这不处理大小为 n 的列表之类的事情,但这只是根据您的情况进行适当修改的问题。

于 2012-03-15T16:04:31.710 回答
-2
@list = split /,/ => $string;
$it = $list[6];

要不就

$it = (split /,/ => $string)[6];

{6}每次都写一个带有 a 的模式。

于 2012-03-15T16:07:12.927 回答