将文本与括号之间的可能括号匹配

时间:2013-10-20 08:38:20

标签: java regex match brackets

我需要匹配${}之间的文字 例如:

${我需要匹配此文字}

简单的正则表达式\$\\{(.+?)\\}将正常工作,直到我将}部分放在文本中

卷曲括号在文本中配对以匹配。

有没有可能通过正则表达式来解决这个问题?

2 个答案:

答案 0 :(得分:0)

$添加到ReGex的末尾,不要将其转义。美元符号表示它将在最后检查前一个字母或符号。

ReGex:\${(.+?)}$

Java格式化:\\${(.+?)}$

答案 1 :(得分:0)

\$\{((?:\{[^\{\}]*\}|[^\{\}]*)*)\}

如果我们遇到一个开口支架,我们会寻找它的配对,在收盘后我们会像往常一样继续。这不能处理多个嵌套括号级别。

[^\{\}]*中的主要构建块 - 任何非括号序列。它可以用方括号\{[^\{\}]*\}包围,但可能不是(?:\{[^\{\}]*\}|[^\{\}]*)。可以存在这些序列的任何计数,因此最后*

任何级别的嵌套都可能需要recursive regex,Java不支持。但是,通过仔细扩展这个想法,可以匹配任何固定金额。