我正在尝试解析一个字符串,并将所有包含在'!'的花括号{}之间的单词括起来在其中。
输入示例:
"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"
而忽略其余部分。
我真的很感激帮助。提前感谢您的回答
答案 0 :(得分:4)
将感叹号放在那里并使用字符类而不是非贪婪。
{([^}]+![^}]+)}