2016-07-04 16 views
1

ich die folgende Regex Zeichenfolge haben:Regex Rückkehr nur Teil eines Strings

(@Model.[a-z]*) 

Ich versuche, es zu verwenden, um bestimmte Werte aus einer Rasierklinge Ansicht E-Mail zu ziehen. So konnten wir die folgenden Werte haben:

  • @ Model.FirstName
  • @ Model.Company

Ich würde erwarten, dass der folgende Code diese Werte in einer Liste zurück:

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

Stattdessen bekomme ich nur eine Liste mit dem gleichen Wert "@Model." Was fehlt mir hier?

Antwort

3

Die Werte können sowohl Klein enthalten und Groß daher die regexp sein sollte:

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

... oder Sie können RegexOptions.IgnoreCase Put-Option, aber das würde auch auf Model Teil.

+1

Nun, der unescaped Punkt verwenden passt auf jedes andere Zeichen als ein Neue Zeile. '@Modell. [A-zA-Z] *' entspricht '@Modell ~'. –

0

Sie sollen einen Groß- und Kleinschreibung Ansatz berücksichtigen:

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

Wenn Sie Razor verwenden.

Dann Betrachten Sie nicht die @Model Platzierung innerhalb der Anführungszeichen

EG

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

es statt wie diese

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