2016-07-04 78 views
1

,我有以下的正則表達式字符串的一部分:正則表達式只返回一個字符串

(@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一部分。如果您使用的剃刀

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

好了,轉義點比其他任何字符匹配新隊。 '@Model。[a-zA-Z] *'將匹配'@ Model〜'。 –

0

你應該考慮不區分大小寫方法。

再考慮未放置@Model引號內

EG

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

,而不是像這樣使用

Regex.Matches(emailString, Model + ".[a-z]*", RegexOptions.IgnoreCase) 
相關問題