我想使用 正则表达式 获取字符串 {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...
}
有什么建议吗?
答案 0 :(得分:3)
您可以使用否定外观来仅获取前面没有{...}
的{{1}}子字符串或者{
后面的}
字符串:
(?<!{){[^{}]+}(?!})
请参阅regex demo
(?<!{)
- 如果在当前位置之前有{
,则会导致比赛失败但{
- 文字{
[^{}]+
- {
和}
}
- 文字}
(?!})
- 如果前一个}
之后有}
,则表示匹配失败。