Skip to main content
 首页 » 编程设计

c#之从 razor 文件中获取变量的正则表达式 (c#)

2024年02月04日29freeliver54

我正在寻找一个从 Razor 文件中获取所有变量的正则表达式。

举个例子

<p>Hello @Model.Name,</p> 
<p>@Model.Text</p> 
<a href="/@Model.Slug">Visit our site</a> 

我想要一个正则表达式来获取所有以@Model 开头的“单词”。

在这种情况下,它将是@Model.Name、@Model.Text 和@Model.Slug

这是我目前的想法

"\B@Model.(\w|.)+\b" 

但是我无法正确获取p标签内的变量。

请您参考如下方法:

你可以使用

\B@Model(?:\.\w+)+ 

参见 regex demo

C#:

var results = Regex.Matches(text, @"\B@Model(?:\.\w+)+") 
    .Cast<Match>() 
    .Select(x => x.Value) 
    .ToList(); 

详情

  • \B - 非单词边界
  • @Model - 文字
  • (?:\.\w+)+ - 出现 1 次以上的 . 后跟 1 次以上的单词字符(字母、数字、一些变音符号和连接符)。

请注意,如果可能存在非单词字符,您需要将 \w 替换为 [\w-] 之类的字符类,这将匹配单词字符和连字符。