4

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

我已经使用(?<=\{)(.*?)(?=\})and{(?:\.|(\\{)|[^}'\n])*}来获取之间的所有匹配项,但{}它返回以下匹配项:、、、
"matchA"和匹配项 "matchB""matchC!matchD""matchE""matchF!matchG"

但是,我试图只获得具有“!”的匹配项 在它们中,所以结果应该只有: "matchC!matchD""matchF!matchG"并且忽略其余部分。

我非常感谢您的帮助。提前谢谢大家的回答

4

1 回答 1

4

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

{([^}]+![^}]+)}
于 2013-08-16T18:24:07.083 回答