我有以下字符串.
"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)
你的正则表达式正常工作.那就是,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)