0

我需要匹配和之间的文本${示例}

${我需要匹配这个文本}

简单的正则表达式可以正常工作,直到我在文本\$\\{(.+?)\\}中放置一些}

花括号在文本内配对以匹配。

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

4

2 回答 2

0

在正则表达式的末尾添加 a$并且不要转义它。美元符号意味着它将在最后检查前一个字母或符号。

正则表达式:\${(.+?)}$

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

于 2013-10-20T08:49:15.620 回答
0
\$\{((?:\{[^\{\}]*\}|[^\{\}]*)*)\}

如果我们遇到一个左括号,我们会寻找它的对,然后在右括号之后我们照常进行。这不能处理超过一层的嵌套括号。

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

任何级别的嵌套都可能需要Java 不支持的递归正则表达式。但是任何固定数量都可以通过仔细扩展这个想法来匹配。

于 2013-10-20T08:57:02.380 回答