我需要匹配和之间的文本${
示例}
:
${
我需要匹配这个文本}
简单的正则表达式可以正常工作,直到我在文本\$\\{(.+?)\\}
中放置一些}
花括号在文本内配对以匹配。
有没有可能通过正则表达式来解决这个问题?
在正则表达式的末尾添加 a$
并且不要转义它。美元符号意味着它将在最后检查前一个字母或符号。
正则表达式:\${(.+?)}$
Java 格式:\\${(.+?)}$
\$\{((?:\{[^\{\}]*\}|[^\{\}]*)*)\}
如果我们遇到一个左括号,我们会寻找它的对,然后在右括号之后我们照常进行。这不能处理超过一层的嵌套括号。
这里的主要构建块[^\{\}]*
- 任何非括号序列。它可以用括号括\{[^\{\}]*\}
起来,但可能不是(?:\{[^\{\}]*\}|[^\{\}]*)
。这些序列的任何计数都可以存在,因此*
在最后。
任何级别的嵌套都可能需要Java 不支持的递归正则表达式。但是任何固定数量都可以通过仔细扩展这个想法来匹配。