使用正则表达式从字符串中提取子字符串

时间:2013-10-11 15:28:03

标签: c# regex

我有一个像这样的字符串

ha regular{{patou0383838}}but if{{coffee}}i love {{tomato}}

我需要在c#中使用正则表达式来帮助我提取所有以{{开头并以}}结尾的文字。因此,例如在上面的示例中,我应该能够拥有一组3个子字符串

{{patou0383838}}
{{coffee}}
{{tomato}}

我尝试了我在网上找到的各种例子,但他们没有解决我的问题。

3 个答案:

答案 0 :(得分:1)

您可以尝试这样:

\{{.*?\}}

\{\{.*?\}\}

答案 1 :(得分:0)

如果您的令牌肯定不会像{{token \{\{([^}]+)\}\} }}那样嵌套,您可以使用

1

大括号内的文字被捕获为组{{coffee}}。例如,对于像coffee这样的匹配,组1会保留{}

<小时/> 虽然大括号{m,n}用于指定像{{([^}]+)}} 这样的正则表达式中的范围,但除非另有说明,否则它们不会被视为特殊字符。因此,我们可以通过不将它们转义为

来简化正则表达式
{{1}}

答案 2 :(得分:0)

{}是正则表达式中的特殊字符,因此需要对其进行转义。此外,由于您可以在一行中有多个匹配,因此您需要进行非贪婪的匹配。模式将类似于

string pattern = @"(\{\{.*?\}\})"

括号是捕获的内容,包括{{}}