时间:2019-03-08 标签:c#正则表达式: find placeholders as substring

标签 c# regex

我有以下字符串。

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

在上面的文本中,我有两个占位符。名称和来源

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

查找这些占位符列表的正则表达式模式是什么。

我试过了

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

结果

hello  
NAME 
. nice to meet you. I heard about you via  
SOURCE 
.

我想要的只是

NAME
SOURCE

示例代码

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();

最佳答案

您的正则表达式工作正常。就是这样 Regex.Split()应该行为(见 the doc )。如果你说的真的是你想要的,你可以使用类似的东西:

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

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

Regex.Replace(text, pattern, m => substitutions[m.Groups[1].Value]);

关于时间:2019-03-08 标签:c#正则表达式: find placeholders as substring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6238769/

相关文章:

mysql - 使用 awk gsub 删除 mysql2sqlite 脚本中的尾随逗号

后视长度不同的 python 正则表达式 "or"

c# - 无法进入返回 IEnumerable<T> 的方法?

c# - 在 .NET Core 的 ConfigureService-Methods(特别是 IApplicationLifetime)中使用 DI

c# - 私有(private)类(Class)的公共(public)属性(property)

php - 未知修饰符 'g' PHP 正则表达式错误

Java字符串仅使用正则表达式验证一个字母数字

javascript - 使用 .replace 复杂 BBCode 到 HTML 正则表达式

c# - 如何根据起始集将一组时间间隔转换为另一组时间间隔

c# - LiNQ 在 OrderBy 之后使用 ThenBy