只需要匹配第一对花括号(以及后面的分号(。
已尝试regex/({.*};)/
字符串示例-{text 1}; {text 2};
预期结果{text 1};
当前结果{text 1}; {text 2};
添加?
在这里似乎不起作用-/({.*};?)/
感谢
一个单独的*
被称为贪婪运算符,因为它将尝试匹配尽可能多的源:在您的情况下,最多匹配第二个}
。
您可以使用lazy运算符*?
,它将尽可能短地匹配,这里最多匹配第一个}
。
类似:
/({.*?};)/
或者,您可以使用一个用方括号标注的字符集,该字符集不包括右括号:[^}]
(^
否定该集的内容(,而不是点:
/({[^}]*};)/
(我个人更喜欢这种解决方案,因为它更明确地规定了允许/限制哪些字符参加比赛,但在您的情况下,这只是一个品味问题(。
您在分号后添加?
的建议并不相关,因为它只适用于分号,而不适用于整个组。