我想使用正则表达式获取字符串的集合{value}。

例如:


  lorem ipsum {field1} lorem ipsum {field2} lorem ipsum field1 lorem ipsum field2 {{field3}}


我会得到:{field1} and {field2}

我尝试这样:

string pattern =@"\[(?>[^\{\}]+)*\]";

MatchCollection matches = Regex.Matches(text, pattern);
for (int ctr = 0; ctr < matches.Count; ctr++)
{
    string field = matches[ctr].Value;
    // ... ommitted...
}


有什么建议么?

最佳答案

您可以使用否定环顾四周方法来仅使{...}子字符串前面没有{或紧随其后的}

(?<!{){[^{}]+}(?!})


请参见regex demo

c# - 提取单个大括号内的值-LMLPHP


(?<!{)-如果当前位置之前有{,则会在匹配失败后进行负向查找
{-文字{
[^{}]+-除{}以外的1个或多个符号
}-文字}
(?!})-如果前一个}后面有},则否定超前匹配失败。

关于c# - 提取单个大括号内的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38738558/

10-12 02:47