2012-02-08 2 views
1

Я как бы застрял на этом. У меня есть строка, какRegex Split: помощь в шаблоне

18=abcd1, 19=jghrt23, 20=outut 

Я должен разделить данную строку таким образом, что я получаю список 18,19, 20.

Лучшее, что я мог сделать =(.*\w,)[^\D+=] но, очевидно, его не working,

Примечание: Я мог бы сделать это легко, используя string.split, «сначала», а затем «=», но я хочу использовать регулярное выражение, чтобы я мог его изучить. Я хочу использовать Regex.Split

ответ

3

Я думаю, Split не подходит для выполнения этой задачи.

Использование:

var result = Regex.Matches(input, @"\d+(?==)").Cast<Match>().Select(s => s.Value); 
+0

Это дает противоположность тому, что я хочу. результатом является abcd1, jghrt23, outut, а не 18, 19, 20 – Anand

+0

@ И, я обновил свой ответ. –

+0

Спасибо, это сработало. Я думаю, что волшебство было? = :) – Anand

0

AFAIK вы не можете делать то, что вы просите с одним регулярным выражением, или, по крайней мере, вы не сможете получить отдельные группы. Вы можете использовать 2 шага:

  1. Получить следующий разделенный запятыми элемент, например, с помощью регулярных выражений ^(\d+=\w*),(.*)$ Для этого вам нужно будет хранить оставшуюся строку где-то обработать дополнительные элементы.
  2. Извлеките номер из одного элемента с помощью ^(\d+)=\w+$ и сохраните его где-нибудь.

PS: Я принимаю после = вы получили только буквенно-цифровые символы.