正则表达式仅匹配第一次出现不起作用



只需要匹配第一对花括号(以及后面的分号(。

已尝试regex/({.*};)/

字符串示例-{text 1}; {text 2};

预期结果{text 1};

当前结果{text 1}; {text 2};

添加?在这里似乎不起作用-/({.*};?)/

感谢

一个单独的*被称为贪婪运算符,因为它将尝试匹配尽可能多的源:在您的情况下,最多匹配第二个}

您可以使用lazy运算符*?,它将尽可能短地匹配,这里最多匹配第一个}

类似:

/({.*?};)/

或者,您可以使用一个用方括号标注的字符集,该字符集不包括右括号:[^}](^否定该集的内容(,而不是点:

/({[^}]*};)/

(我个人更喜欢这种解决方案,因为它更明确地规定了允许/限制哪些字符参加比赛,但在您的情况下,这只是一个品味问题(。

您在分号后添加?的建议并不相关,因为它只适用于分号,而不适用于整个组。

最新更新