我正在寻找一个从 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-] 之类的字符类,这将匹配单词字符和连字符。
