2016-04-12 3 views
1

я немного путать с регулярным выражением, у меня есть строка, которая выглядит как что-то вроде этого:Regex: Заменить текст между запятой определенное количество раз

test = "article;vendor;qty;desc;price1;price2"

и то, что я пытаюсь сделать только получить price1. настоящее время я использую эту функцию:

Regex.Replace(test, @".*;[^;]*;", "");

, которые позволяют мне получить price2, но я не могу видеть, как я могу изолировать price1.

+0

'var price2 = test.Split (';') [4];'? –

ответ

1

Вы считаете только с помощью String.Split() вызова вместо того, чтобы сломать текущую полу двоеточий строки в массив:

var input = "article;vendor;qty;desc;price1;price2"; 
var output = input.Split(';'); 

И тогда вы могли бы просто получить доступ к стоимости его индекс:

var result = output[4]; // yields "price1" 

Вы хотите использовать регулярное выражение, если есть определенный шаблон, который можно использовать для соответствия и выбора именно того, что вы ищете, но для списков с разделителями метод String.Split() обычно упрощает (особенно если нет ничего, чтобы однозначно идентифицировать элемент, который вы пытаетесь извлечь из списка).

+0

Вы совершенно правы, мне интересно, почему я искал сложные вещи, спасибо вам. –

+0

Нет проблем. Регулярные выражения, безусловно, имеют свое применение, но обычно они могут стать «молотом», который может быть использован для вещей, которые немного за пределами их возможностей. Поэтому, хотя вы * можете * использовать его здесь, это может быть не лучший подход :) –

0

Используйте следующее регулярное выражение:

(?:[^;]*;){4}([^;]*); 

И заменить первую группу матча.

Смежные вопросы