c#Regex:找到占位符作为子字符串

Moh*_*san 8 c# regex

我有以下字符串.

"hello [#NAME#]. nice to meet you. I heard about you via [#SOURCE#]."
Run Code Online (Sandbox Code Playgroud)

在上面的文字我有两个占位符.名称和来源

我想使用Reg Ex提取这些子字符串.

什么是reg ex模式来找到这些占位符的列表.

我试过了

string pattern = @"\[#(\w+)#\]";
Run Code Online (Sandbox Code Playgroud)

结果

hello  
NAME 
. nice to meet you. I heard about you via  
SOURCE 
.
Run Code Online (Sandbox Code Playgroud)

我想要的只是

NAME
SOURCE
Run Code Online (Sandbox Code Playgroud)

示例代码

string tex = "hello [#NAME#]. nice to meet you. I heard about you via [#SOURCE#]."; 

    string pattern = @"\[#(\w+)#\]";

    var sp = Regex.Split(tex, pattern);

    sp.Dump();
Run Code Online (Sandbox Code Playgroud)

svi*_*ick 8

你的正则表达式正常工作.那就是,Regex.Split()应该如何表现(参见文档).如果您所说的真的是您想要的,您可以使用以下内容:

var matches = from Match match in Regex.Matches(text, pattern)
              select match.Groups[1].Value;
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您想使用某些规则替换占位符(例如使用a Dictionary<string, string>),那么您可以:

Regex.Replace(text, pattern, m => substitutions[m.Groups[1].Value]);
Run Code Online (Sandbox Code Playgroud)