2016-07-04 3 views
1

У меня есть следующая строка: регулярного выражениеRegex возвращается только часть строки

(@Model.[a-z]*) 

Я пытаюсь использовать его, чтобы вытащить определенные значения из вида бритвы по электронной почте. Таким образом, мы могли бы иметь следующие значения:

  • @ Model.FirstName
  • @ Model.Company

Я ожидаю, что следующий код вернуть эти значения в списке:

Regex.Matches(emailString, "@Model.[a-z]*").Cast<Match>().Select(match => match.Value) 

Вместо этого я просто получаю список одного значения «@Model». Что мне здесь не хватает?

ответ

3

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

(@Model\.[a-zA-Z]*) 

... или вы можете поместить RegexOptions.IgnoreCase вариант, но это будет применяться также к Model части.

+1

Ну, неэкранированный точка соответствует любому полукокса другой, чем новая линия. '@Model. [A-zA-Z] *' будет соответствовать '@ Model ~'. –

0

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

Regex.Matches(emailString, "@Model.[a-z]*", RegexOptions.IgnoreCase) 
0

Если вы используете бритву.

Тогда Рассмотрим не Размещение @model внутри кавычек

Е.Г.

Regex.Matches(emailString, "@Model.[a-z]*", RegexOptions.IgnoreCase) 

вместо его использовать как этот

Regex.Matches(emailString, Model + ".[a-z]*", RegexOptions.IgnoreCase) 
Смежные вопросы