捕获{}的正则表达式

4

你好,我需要创建一个正则表达式,以匹配以下模式:

在字符串中{任意字符}。可能的字符串示例:

示例1:

{123} abc {456} def {789}hg 应该返回3个匹配项:

{123},{456}和{789}

示例2:

abcd{{{r} 345 } {mmm}

应该返回2个匹配项{r}和{mmm}

因此,表达式应该匹配{任何非{}字符任意次数,然后是闭合符号}

到目前为止,我已经想出了这个,但它没有起作用:

{*[^{]}

非常感谢您的帮助。


你需要使用 \ 来转义 { 和 },例如 "{123}"。 - ILovePaperTowels
2
由于您的第二个示例表明可能存在嵌套且潜在不平衡的大括号:即{1{2{3}2}?正则表达式不好用 - 使用解析器。 - the wolf
2个回答

3

这是您需要的:

{[^{}]*}

花括号应该被转义,像这样:\{[^{}]*\} - Bjørne Malmanger

2

就像ILovePaperTowels所说的那样——如果特定的正则表达式语法将花括号视为特殊字符,则需要对它们进行转义。

如何转义花括号以及如何正确计算嵌套括号的数量(以任何您想要的方式),取决于正则表达式的类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接