我有一个字符串,在[[]]之间有一些键。
string s = "<p>Hi [[USER]],<br/>How are you doing<br/>Regards,<br/>[[SENDER]]</p>";
我想首先在一个列表中获取密钥名称USER和SENDER,我正在通过以下方式进行操作:
var keys = new List<string>();
foreach (Match match in Regex.Matches(s, @"[[(.*?)]]"))
{
keys.Add(match.Value);
}
然而,钥匙是空的。
谁能告诉我我做错了什么?
另外,我尝试使用&lt;&lt; &GT;&GT;而不是[[]]正在工作但是当我将数据加载到&lt;&lt;时,单词会消失&GT;&GT;
答案 0 :(得分:2)
似乎你需要逃避'[':
string s = "<p>Hi [[USER]],<br/>How are you doing<br/>Regards,<br/>[[SENDER]]</p>";
var keys = new List<string>();
foreach (Match match in Regex.Matches(s, @"\[\[(.*?)]]"))
{
keys.Add(match.Value.Trim('[').Trim(']'));
}
要在不修剪的情况下排除[[]]
,请使用@"(?<=\[\[)(.*?)(?=])"
或者@ wiktor-stribiżew指出,你可以简化为:
var keys = Regex.Matches(s, @"\[\[(.*?)]]").Cast<Match>()
.Select(p => p.Groups[1].Value).ToList()
答案 1 :(得分:0)
[和]是正则表达式(我忘了单词......令牌?)令牌。尝试逃避它们:\[\[.*\]\]
。
答案 2 :(得分:0)
var keys = (from Match m in Regex.Matches(s, @"\[\[(.*?)]]") select m.Groups[1] + "").ToList();