正则表达式只返回字符串的一部分

时间:2016-07-04 13:19:45

标签: c# regex

我有以下正则表达式字符串:

(@Model.[a-z]*)

我正在尝试使用它从剃须刀视图电子邮件中提取某些值。 所以我们可以有以下值:

  • @ Model.FirstName
  • @ Model.Company

我希望以下代码在列表中返回这些值:

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

相反,我只是得到一个相同值的列表“@Model”。 我在这里缺少什么?

3 个答案:

答案 0 :(得分:3)

值可以包含小写和大写,因此正则表达式应为:

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

...或者您可以选择RegexOptions.IgnoreCase选项,但这也适用于Model部分。

答案 1 :(得分:0)

您应该考虑不区分大小写的方法:

INNER JOIN table t2 ON (@id IS NULL OR ((@id IS NOT NULL) AND (t2.id = @id)))

答案 2 :(得分:0)

如果您正在使用Razor。

然后考虑不将@Model放在引号内

EG

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

而不是像这样使用它

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