我想要一个收藏{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...
}
有什么建议么?
您可以使用否定环视来仅获得{...}
子串不具有{
在前面或}
就在他们之后:
(?<!{){[^{}]+}(?!})
See the
-
(?<!{)
- 如果存在负向后看,则匹配失败{
当前位置之前
-
{
- 字面意思{
-
[^{}]+
- 1 个或多个符号以外的符号{
and }
-
}
- 字面意思}
-
(?!})
- 如果有的话,则负向预测会导致匹配失败}
就在上一个之后}
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)