使用RegEx在大括号之间提取字符串,即{{content}}
我得到一个字符串,其格式为{{some_text}}。 我想使用C#将其提取到一个集合中,并相信RegEx是最好的方法。 RegEx有点过头,但在这种情况下似乎足够强大。 这是我的例子:
{{element='h1'}} {{element='price'}}
我想最终得到这样的东西:
collection [0] =“element =’title’”;
collection [1] =“url”;
collection [2] =“element =’photo’property =’src’maxwidth =’135’”;
collection [3] =“element =’h1’”;
collection [4] =“element =’price’”;
请注意,也没有重复项,但如果难以做到,我不想让事情复杂化。
我看到这篇文章做了类似但在括号内的内容 : 如何使用Regex在c#中的文本字符串中提取方括号的内容
我的问题是我有双括号而不是一个字符。 我怎样才能做到这一点?
完全取决于您链接的问题:
ICollection matches = Regex.Matches(s.Replace(Environment.NewLine, ""), @"\{\{([^}]*)\}\}") .Cast() .Select(x => x.Groups[1].Value) .ToList(); foreach (string match in matches) Console.WriteLine(match);
我已将[和]更改为{{和}}(已转义)。 这应该是你需要的collections。 请务必阅读正则表达式分解的另一个问题的第一个答案。 如果你使用它,理解它是很重要的。
RegEx足以满足您的需求。
试试这个正则表达式:
\{\{.*?\}\}
那将懒惰地匹配双括号之间的表达式。
编辑:这将为您提供字符串,包括双括号。 您可以手动解析它们,但如果正则表达式引擎支持前瞻和后瞻,您可以直接使用以下内容获取内容:
(?<=\{\{).*?(?=\}\})
在进行比赛后,你需要摆脱重复。
\{\{(.*?)}}
结果1
- 元素=“标题”
结果2
- url
结果3
- 元素=“标题”
结果4
- element =’photo’property =’src’maxwidth =’135′
结果5
- 元素= ‘H1’
结果6
- 元素=“价格”