2013-06-30 3 views
0

Я хочу совместить слово после слова "type:".Соответствующий текст после двоеточия

Что у меня есть?

Моя истинная картина: (< = тип \ s: \ s) (\ ш *)

Текст: "Тип: текст,"

Он работает точно как Я хочу, чтобы, когда у меня есть только один пробел до/после цвета ...

«type_SPACE _: _ SPACE_text

Но если у меня есть 2 пробелов или нет, это не сработает.

Я уже пытаюсь с этим, но не согласен. (? < = type \ s *: \ s *) (\ w *)

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

(\ S *) (< = тип?): (. *) (\ S *) (? =,)

Чтобы сделать тест, я использую тестер gskinner в ... http://gskinner.com/RegExr/

ответ

3

Если вы делаете это в C# и с помощью прилагаемого двигателя Regex, оригинал регулярное выражение должно работать, с небольшим изменением:

 string myString = "type : something"; 

     var match = Regex.Match(myString, @"(?<=type\s*:\s*)\w+"); 

     Console.Write(match); 

Edit: причина, почему версия ?<=type\s*:\s*)\w* не работает для вас с несколькими пробелы, это потому, что соответствие регулярных выражений счастливо возвращал различные комбинации строк с 0 символами после переменного количества пробелов, следующих за двоеточием.

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

+0

Спасибо! Работал как шарм! – lcssanches

+0

Magic, я все еще немного озадачен, почему ваш оригинальный '(? <= Type \ s *: \ s *) \ w *' не работает, я предполагаю, что он доволен совпадением '\ w' 0 раз, но я думал, что жадный матч позаботится об этом = O – Chris

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