Regex 如何用正则表达式匹配内部可能结果

Regex 如何用正则表达式匹配内部可能结果,regex,string,nested,Regex,String,Nested,我有一个正则表达式来匹配字符串中{和}之间的任何内容 “/{.*}/” 再简单不过了。当我有一行多个匹配项时,问题就出现了。如果我有这样一句话: 这是我的{string},它不{work}正确 正则表达式将匹配 {string},它不{工作} 而不是 {string} 如何使其与第一个结果匹配?使用一个字符类,该类包含除右括号外的所有内容: /{[^}]+}/ 问号的意思是“不贪婪” 默认行为是贪婪匹配,即first{to last}。使用惰性匹配?在你死后 /{.*?}/ 或者甚至不用“n

我有一个正则表达式来匹配字符串中{和}之间的任何内容

“/{.*}/”

再简单不过了。当我有一行多个匹配项时,问题就出现了。如果我有这样一句话:

这是我的{string},它不{work}正确

正则表达式将匹配

{string},它不{工作}

而不是

{string}


如何使其与第一个结果匹配?

使用一个字符类,该类包含除右括号外的所有内容:

/{[^}]+}/
问号的意思是“不贪婪”


默认行为是贪婪匹配,即first{to last}。使用惰性匹配?在你死后

/{.*?}/
或者甚至不用“nota}”


这将适用于深度仅为1的单个嵌套大括号:
{(({.*?})*|.*?}


我不知道如何获得无限深度,或者使用正则表达式是否可行,我不知道是否有嵌套的大括号,但如果有,这将不会返回所需的结果。对于{aaa{bbb}ccc},它将返回{aaa{bbb}。这正如预期的那样工作,尽管Victor的观点很好。可能是另一篇文章的主题……这是一个比公认答案更好的习惯。对于更复杂的正则表达式,这不会成为灾难性回溯的牺牲品。
/{.*?}/
/{[^}]*}/