正则表达式匹配由'!'分隔的单词并括在花括号'{''}'之间

时间:2013-08-16 18:21:20

标签: c# .net regex

我正在尝试解析一个字符串,并将所有包含在'!'的花括号{}之间的单词括起来在其中。
输入示例:
"This is {matchA} and {matchB} but I need {matchC!matchD}, however {matchE} doesn't count but {matchF!matchG} is what I'm looking for"

我使用了(?<=\{)(.*?)(?=\}){(?:\.|(\\{)|[^}'\n])*}来获取{}之间的所有匹配项,但它会将以下内容作为匹配项返回:
"matchA""matchB""matchC!matchD""matchE""matchF!matchG"匹配

但是,我试图只获得有'!'的比赛在其中,结果应该只有:"matchC!matchD""matchF!matchG"而忽略其余部分。

我真的很感激帮助。提前感谢您的回答

1 个答案:

答案 0 :(得分:4)

将感叹号放在那里并使用字符类而不是非贪婪。

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