[英]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.