2013-06-25 6 views
-1

У меня есть эта строка: «Cooper_Johnson-Билокси-01-Maqueta_Completa_176.max» Дело в том, что мне нужно разделить его на эти переменные:Regexp шаблон для разделения строки в C#

  1. клиента: "Cooper_Johnson"
  2. Проект: "Билокси"
  3. WIP номер: "01"
  4. Название Сцена: "Maqueta_Completa"
  5. Внутренняя Копия: "176"

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

Я использовал http://gskinner.com/RegExr/ этот тестер RegEx, это действительно здорово, но мне не хватает знаний о регулярном выражении, чтобы использовать его. Также вы можете посоветовать любое руководство по регулярному выражению? Может быть, некоторые учебники от простого до продвинутого уровня? Большое спасибо!

+2

Я бы порекомендовал [regular-expressions.info] (http://www.regular-expressions.info/tutorial.html). Я использую его все время, когда я перехожу к ссылке, и он предлагает очень хороший учебник. – Brian

+1

Мой сохраненный «чит-лист»: [http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet](http://www.mikesdotnetting.com/Article/46/CSharp -регулярные-выражения-Чит-лист). Я бы рекомендовал посмотреть на именованные группы. Это позволит обеспечить более чистый доступ. – Andrew

+0

Большое спасибо, закладок! –

ответ

4

Вы можете использовать именованные захваты:

@"^(?<client>[^-]+)-(?<project>[^-]+)-(?<WIP>\d+)-(?<sceneName>.*?)_(?<internalCopy>\d+)\.max$" 

Там не является специальные вещи в этой схеме:

[^-] character class containing all characters but - 

(?<toto>..) named capture (toto here) 

^ $ anchors for begining and end of the string 

.*? all characters zero or more times (lazy quantifier) 
+1

Слова OP: «Я знаю, как это сделать с помощью обычной строковой переменной - нахождение символов, разделение и т. Д., Но я действительно хочу научиться использовать регулярные выражения для таких вещей» –

+1

Также не все значения на входе ограничены '-'. – Brian

+0

Хорошо, давайте перейдем к регулярному выражению. –

0

Вот какое-то направление

http://www.RegexHero.com это хорошее место, чтобы проверить ваше регулярное выражение против строки.

C# Regex Sheet является шпаргалка/руководство по C# регулярное выражение

Dot Net Perls здесь хорошее место, чтобы начать с регулярных выражений в C#

MSN Page on Regex

(Но вы можете использовать String.split() и почти есть то, что вы хотите, кроме последних 2)

+0

Большое спасибо за ссылки, проверит их. Да, я могу использовать Split, но область обучения - регулярные выражения. –

+0

Право, я просто почувствовал, что стоит упомянуть – Jonesopolis

0

Как насчет легенды RegexLib. Найти, учиться и чит Regex

+0

Спасибо за ссылку, отмеченную закладкой! –

+0

Thats cool now ... –