我获得了一个字符串,其中占位符的格式为{{some_text}}。我想使用C#将其提取到一个集合中,并相信RegEx是最好的方法。 RegEx有点过头,但在这种情况下似乎足够强大。这是我的例子:
<a title="{{element='title'}}" href="{{url}}">
<img border="0" alt="{{element='title'}}" src="{{element='photo' property='src' maxwidth='135'}}" width="135" height="135" /></a>
<span>{{element='h1'}}</span>
<span><strong>{{element='price'}}<br /></strong></span>
我想结束这样的事情:
collection [0] =“element ='title'”;
collection [1] =“url”;
collection [2] =“element ='photo'property ='src'maxwidth ='135'”;
collection [3] =“element ='h1'”;
collection [4] =“element ='price'”;
请注意,也没有重复,但如果难以做到,我不想让事情复杂化。
我看到这篇文章做了类似的事情,但在括号内: How to extract the contents of square brackets in a string of text in c# using Regex
我的问题是我有双括号而不是一个字符。我怎么能这样做?
答案 0 :(得分:4)
完全从您链接的问题中获取:
ICollection<string> matches =
Regex.Matches(s.Replace(Environment.NewLine, ""), @"\{\{([^}]*)\}\}")
.Cast<Match>()
.Select(x => x.Groups[1].Value)
.ToList();
foreach (string match in matches)
Console.WriteLine(match);
我已将[和]更改为{{和}}(已转义)。这应该是你需要的收藏。请务必阅读正则表达式分解的另一个问题的第一个答案。如果你使用它,理解它是很重要的。
答案 1 :(得分:0)
RegEx功能足以满足您的需求。
试试这个正则表达式:
\{\{.*?\}\}
这将匹配双括号之间的表达式,懒惰。
编辑,它会为您提供字符串,包括双括号。您可以手动解析它们,但如果正则表达式引擎支持前瞻和后瞻,您可以直接使用以下内容获取内容:
(?<=\{\{).*?(?=\}\})
答案 2 :(得分:0)
比赛结束后,您需要删除重复项。
\{\{(.*?)}}
结果1
结果2
结果3
结果4
结果5
结果6