C# 使用正则表达式{{content}提取大括号之间的字符串
我得到了一个字符串,该字符串具有{{some_text}格式的占位符。我想用C#将其提取到一个集合中,并相信正则表达式是最好的方法。正则表达式有点让我难以理解,但它似乎足够强大,可以在这种情况下工作。以下是我的例子:C# 使用正则表达式{{content}提取大括号之间的字符串,c#,.net,regex,C#,.net,Regex,我得到了一个字符串,该字符串具有{{some_text}格式的占位符。我想用C#将其提取到一个集合中,并相信正则表达式是最好的方法。正则表达式有点让我难以理解,但它似乎足够强大,可以在这种情况下工作。以下是我的例子: <a title="{{element='title'}}" href="{{url}}"> <img border="0" alt="{{element='title'}}" src="{{element='photo' property='src' maxwi
<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>
{{element='h1'}}
{{element='price'}}
我想以这样的方式结束:
集合[0]=“元素='title'”
集合[1]=“url”
集合[2]=“element='photo'property='src'maxwidth='135'”
集合[3]=“元素='h1'”
集合[4]=“元素=”价格'
请注意,也没有重复项,但如果很难做到,我不想让事情复杂化
我看到这篇文章做了一些类似的事情,但在括号内:
我这里的问题是我有两个大括号,而不是一个字符。我怎样才能做到这一点呢?RegEx功能强大,足以满足您的需要 请尝试以下正则表达式:
\{\{.*?\}\}
这将在双括号之间惰性地匹配表达式
编辑:这将为您提供字符串,包括双括号。您可以手动解析它们,但如果正则表达式引擎支持“向前看”和“向后看”,则可以通过以下方式直接获取其中的内容:
(?<=\{\{).*?(?=\}\})
(?完全取自您链接的问题:
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);
i收集匹配项=
Regex.Matches(s.Replace(Environment.NewLine,“”,@“\{{([^}]*)\}”)
.Cast()
.Select(x=>x.Groups[1]。值)
.ToList();
foreach(匹配中的字符串匹配)
控制台写入线(匹配);
我已将[and]改为{和}(转义)。这应该是您需要的集合。请务必阅读regex细分的其他问题的第一个答案。如果您使用它,理解它很重要。您需要在匹配后除去重复项
\{\{(.*?)}}
结果1
元素class='title'
结果2
网址
结果3
元素class='title'
结果4
element='photo'property='src'maxwidth='135'
结果5
元素='h1'
结果6
要素价格
您给出的链接准确地显示了正则表达式是如何分解的。分别用{{和}替换[nad]应该很容易。