Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用正则表达式{{content}提取大括号之间的字符串_C#_.net_Regex - Fatal编程技术网

C# 使用正则表达式{{content}提取大括号之间的字符串

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

我得到了一个字符串,该字符串具有{{some_text}格式的占位符。我想用C#将其提取到一个集合中,并相信正则表达式是最好的方法。正则表达式有点让我难以理解,但它似乎足够强大,可以在这种情况下工作。以下是我的例子:

<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]应该很容易。