我需要匹配${
和}
之间的文字
例如:
${
我需要匹配此文字}
简单的正则表达式\$\\{(.+?)\\}
将正常工作,直到我将}
部分放在文本中
卷曲括号在文本中配对以匹配。
有没有可能通过正则表达式来解决这个问题?
答案 0 :(得分:0)
将$
添加到ReGex的末尾,不要将其转义。美元符号表示它将在最后检查前一个字母或符号。
ReGex:\${(.+?)}$
Java格式化:\\${(.+?)}$
答案 1 :(得分:0)
\$\{((?:\{[^\{\}]*\}|[^\{\}]*)*)\}
如果我们遇到一个开口支架,我们会寻找它的配对,在收盘后我们会像往常一样继续。这不能处理多个嵌套括号级别。
[^\{\}]*
中的主要构建块 - 任何非括号序列。它可以用方括号\{[^\{\}]*\}
包围,但可能不是(?:\{[^\{\}]*\}|[^\{\}]*)
。可以存在这些序列的任何计数,因此最后*
。
任何级别的嵌套都可能需要recursive regex,Java不支持。但是,通过仔细扩展这个想法,可以匹配任何固定金额。