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