繁体   English   中英

c# 正则表达式:查找占位符为 substring

[英]c# Regex: find placeholders as substring

我有以下字符串。

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

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

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

查找这些占位符列表的 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()应该如何表现(参见文档)。 如果您所说的确实是您想要的,则可以使用以下内容:

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

试试这个正则表达式:

\[#([A-Z]+)#\]
^hello (.*?). nice to meet you. I heard about you via (.*?).$

很简单, ()表示你想捕捉里面的内容, .*? 是(所谓的)“不贪婪”捕获(捕获尽可能少的字符)。 . 表示任何字符。

以上演示

除非您的占位符总是使用[#前缀和#]后缀,否则请查看其他用户的帖子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM