给出:
"abc{defghij{kl}mnopqrst}uvwxyz{aaaaaaaaaa}"
我想匹配字符{
和最后一个}
之间的文本(不包括嵌套),即文本{defghij{kl}mnopqrst}
和{aaaaaaaaaa}
。
没有嵌套的{kl}
,正则表达式\{[^{}]*\}
可以正常工作。但嵌套{kl}
除外。
有没有办法做到这一点?如果不可能,我是否可以说“匹配{和}之间的文本,其中所包含文本的大小至少为例如3个字符,以使包含两个字符的嵌套{kl}不匹配?(我假设一个层嵌套)
编辑者:https://www.freeformatter.com/java-regex-tester.html
谢谢
答案 0 :(得分:1)
在您的问题中,由于嵌套级别不会达到两个,因此可以使用可读的短正则表达式来解决它,这可能是:
\{(?:\{[^{}]*}|[^{}]+)*}
在Java中,必须像我一样避免使用大括号。
上面的正则表达式匹配左括号,然后寻找{
和}
字符以外的其他字符(即[^{}]+
)或用括号{[^{}]*}
括起来的字符,并重复此模式然后希望尽可能匹配大括号。