Какое регулярное выражение я могу использовать, чтобы найти запись Nᵗʰ в списке через запятую? - PullRequest
7 голосов
/ 15 марта 2012

Мне нужно регулярное выражение, которое можно использовать для поиска записи N th в списке через запятую.

Например, скажем, этот список выглядитнапример:

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

... и я хотел найти значение записи 7 th (alpha-beta).

Ответы [ 3 ]

9 голосов
/ 15 марта 2012

Моей первой мыслью было бы не использование регулярного выражения, а использование чего-то, что разбивает строку на массив в запятой, но поскольку вы запрашивали регулярное выражение.

большинство регулярных выражений позволяют вам указатьминимальное или максимальное соответствие, поэтому что-то вроде этого, вероятно, будет работать.

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

Это предназначено для соответствия любому количеству символов, которые не являются запятой, за которой запятая шесть раз точно(?:[^,]*,){6} - ?: говорит не захватывать, а затем сопоставлять и захватывать любое количество символов, не являющихся запятой ([^,]+).Вы хотите использовать первую группу захвата.

Дайте мне знать, если вам нужна дополнительная информация.

РЕДАКТИРОВАТЬ: я редактировал выше, чтобы не захватить первую часть строки.Это регулярное выражение работает в C # и Ruby.

0 голосов
/ 15 марта 2012
@list = split /,/ => $string;
$it = $list[6];

или просто

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

Ударяет запись шаблона с {6} в нем каждый раз.

0 голосов
/ 15 марта 2012

Вы можете использовать что-то вроде:

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

В качестве отправной точки. (Замените $ m значением (n-1).) Контент будет находиться в группе захвата 2. Он не обрабатывает такие вещи, как списки размера n, но это всего лишь вопрос внесения соответствующих изменений в вашу ситуацию.

...